[질문] Web Programming 에서 접근 제한하는 방법 ?
글쓴이: sDH8988L / 작성시간: 목, 2006/08/31 - 8:59오전
안녕하십니까...
저는 지금 CGI를 이용하여 작은 Web Site를 만들고 있습니다...
그런데, 보안이 문제가 되더군요...
Site에는 cgi file 말고도 그냥 html file도 상당히 많은데요...
기본적인 login 관리는 Cookie를 이용해서 하고 있습니다...
그러다 보니 cgi file에서는 Cookie Check를 할 수 있지만, html file들에서는 그리 할 수가 없더군요...
다시 말해, login 과정을 거치지 않고 주소창에 직접 내용의 html file을 적어서 들어오는 경우를
막기가 힘들다는 거죠...
물론, 많이 쓰는 Access Control 방법인 .htaccess를 쓰를 방법이 있지만, 이건 login 하고는 상관없이
동작하는 것이기 때문에 좀 꺼려지는 부분이 있습니다...
(혹은 사용자 DB의 내용을 또 다른 곳(.htpasswd)에 관리해야 하는 부담이 있어서요...)
요약을 하자면, 제가 하고 싶은 일은 Site의 어떤 File이건(cgi, html 모두) 간에 login 과정을 거치지
않고는 직접 접근 할 수 없게 하고 싶고 login을 하게 되면 전부 Access가 가능하도록 하고 싶은 것입니다.
어떻게 해야 하겠습니까 ???
Forums:
HTML 파일을 외부에
HTML 파일을 외부에 숨길수 있을것같습니다. HTML 을 읽어서 뿌려주는 cgi 를 하나 따로 두면 될듯한데요.
1) HTML 파일에 대한 해쉬를 만듬(URL 에서 파일명이 보이면 안되니까)
a.html -- (해쉬) --> z.html
2) 해쉬를 받아서 해당 HTML 파일을 읽어서 뿌려줌
document.cgi?page=z.html
3) 사용자는 a.html 의 존재를 알 수 없고, document.cgi 에서는 쿠키를 처리할 수 있음.
흠... html file을 1차로
흠...
html file을 1차로 숨기기에 좋은 방법인 듯 합니다...
그렇지만, 많은 html file 내부에 있는 hyperlink 들을 어떻게 처리해야 할 지가 문제가 될 수도 있겠네요...
예를 들자면, image가 1000장이 있어서 이것을 Picasa를 이용하여 Web Page 형식으로 만든다면, html page가
1000개 이상이 나오게 됩니다... 물론, 아주 단순한 것들이죠... 문제는 이 html file들 내부에 많은 link
들이 있다는 겁니다... dotri님께서 말씀하신 방법으로 하려면, link click을 실행하기 전에 cgi를 실행할 수
있어야 할 거 같은데요...
아무래도 디렉토리에 뭔가 제한을 두는 것이 가장 간단한 방법일 거 같습니다...
아니면 login 시에 Cookie를 setting하면서 .htaccess file에 login 한 것 같은 처리를 하는 것이겠죠...
그런데, 그 .htaccess file에 login 한 것처럼 하는 code를 어떻게 할 지를 모르겠씁니다...
오픈소스
오픈소스 웹파이어월을 사용해보는건 어떠실지요? Apache 의 모듈형태로 탑재되는것들도 있습니다.
mod_rewrite 로 쉽게 해결될 듯 합니다.
dotri 님이 쓰신대로 static content를 읽어 client쪽으로 전송하는 cgi를 만들고,
rewrite rule을 적용하여 static content의 위치를 cgi쪽으로 전달하면 되겠죠.
이를테면
RewriteRule /html/(.*) /cgi-bin/htmlagent.cgi?file=$1
간단하게 이 한줄 만으로도 html 컨텐트를 보호할 수 있을 것입니다.
로그인 관리는 해당 htmlagent.cgi에서 처리하면 되니까요.
(물론 특정 파일을 읽어 전송하는 cgi는 보안에 특히 조심하셔야 할겁니다.
읽어들이는 directory에 대한 제약사항이 없으면 정말 위험하겠죠.)
또 한가지 방법으로는,
mod_rewrite 문서를 잘 읽어보시면 rewrite condition을 사용하여 cookie variable과 같은 값으로
rewrite rule을 생성할 수도 있습니다.
(이를테면 로그인 한 경우는 cgi를 안통하고 바로 file에 액세스를 하게 하지만 로그인을 안한 경우는
로그인 페이지로 이동하는 것도 가능..할겁니다. ^^; 관련 기능을 직접 써본적은 없어서...)
참고하시면 될듯 하네요.
apache를 쓰신다고
apache를 쓰신다고 가정하면 로그인 쿠키를 체크하는 access control 필터를 (C나 perl등으로) 하나 만드셔서 html 확장자에 끼워넣으면
될것 같네요.
http://perl.apache.org/docs/tutorials/tips/mod_perl_tricks/mod_perl_tricks.html#Access_Control
http://www.modperl.com/book/chapters/ch6.html#Cookie_Based_Access_Control
--
익스펙토 페트로눔
--
익스펙토 페트로눔
댓글 달기