2009-05-31 4 views
0

보안 로그인을 작성하는 PHP 기술을 신뢰하지 않기 때문에 .htaccess를 사용하여 필자가 작성중인 PHP 스크립트의 디렉토리를 비밀번호로 보호하려고했으나 발견했습니다. AuthUserFile에 대한 상대 경로를 사용할 수 없으며이를 일반화 할 수 없습니다..htaccess없이 보안 디렉토리 비밀번호 보호

암호로 보호 된 PHP 보안 로그인 스크립트로 안내해 주시면 매우 감사하겠습니다. 감사.

답변

1

"비밀"파일을 서버의 웹 루트 바깥에있는 디렉토리에 보관하면됩니다. 이러한 파일에 대한 모든 액세스는 디렉토리 내의 단일 PHP 스크립트를 통해 라우트 될 수 있습니다. 이런 식으로 뭔가 :

http://www.example.com/protected-directory/access.php?file=/foo/document.doc

디렉토리 구조로 이와 같은 :

$file = $_REQUEST['file']; 
if ($user->hasAccessTo($file)) { 
    readfile("/server_root/protected_root/$file"); 
} else { 
    readfile('access-denied.html'); 
} 

를 이제, 당신이 가지고 : 당신의 access.php이 같은 일을 할 것이라고에서

+--+ /server_root 
    | 
    +--+ /web_root 
    | | 
    | +--+ /protected-directory 
    |  +-- access.php 
    |  +-- access-denied.html 
    | 
    +--+ /protected_root 
     | 
     +--+ /foo 
     +-- document.doc 

아무도 너의 file 매개 변수로 나사를 풀지 말고 어떤 것을 "../../../etc/passwd". 또한 위의 예에서 올바른 헤더를 보내고 싶을 수도 있으므로 명확히하기 위해 생략했습니다.

0

AuthUserFile의 절대 경로를 사용하여 웹 서버에 액세스 할 수없는 장소에 파일을 배치 할 수 있습니다. 나는 수년 동안 해왔다. 잘 작동합니다.

+0

내가 배포하는 경우 사용자가 스크립트를 배치 할 위치 나 그들이있는 OS를 알지 못합니다. 그래서 나는 .htaccess를 사용할 수 있다고 생각하지 않는다? – tom

+0

여전히 .htaccess (및 .htpasswd)를 사용할 수 있습니다. 기본적으로 아파치 설정 (적어도 아파치 2 용)에는 .ht라는 파일에 대한 액세스를 차단하는 규칙이있다. –

관련 문제