2013-01-14 2 views
0

누군가가이 문제에 관해 의견을 나눌 수 있기를 바랍니다.PHP가 documentroot 위의 문서를 여는 것을 막으십시오.

내 PHP 스크립트는 현재 문서 루트 위의 파일을 require_once (../../ passowrds.php)와 같은 상대 경로를 사용하여 열 수 있습니다.

1) 어쨌든 문서 루트 위에 절대 경로를 열어두고 있습니까?

2) 문서 루트 위의 파일에 액세스하는 가장 안전한 방법은 무엇입니까? 사전에

감사

+0

"루트 의미 이상의 문서" – samayo

+0

@TheCOMPLETEPHPNewbie "문서 루트"는 웹 서버가 가리키는 디렉토리이며 "/ var/www/myapp/htdocs"일 수 있습니다. "/ var/www/myapp", "/ var/www", "/ var"및 "/"디렉토리가있는 위의 "위" (또한 "/ var/www/someonelsesapp"와 같은 그 자식들도 암시 적으로) – IMSoP

+0

시나리오에 대한 배경 지식이 있다면 유용 할 것입니다. 신뢰할 수없는 사용자가 자신의 PHP 파일을 업로드 할 수있게하려고합니까? 실행할 수있는 코드를 제한하고 싶습니까? 그렇다면'file_get_contents' 또는 유사 코드를 실행하여 코드를 "도용"할 수 있다고 생각 해본 적이 있습니까? – IMSoP

답변

-1

write에서 요구되는 파일에 대한 가장 안전한 방법 $ a = 'samplevalue'; 및 쓰기의 passowrds.php의 맨 위; if ($ a! = 'samplevalue') {header ('Location : http://www.example.com/'); }

passowrds.php :

if($r_key != 'a23b24c25samplekey' or empty($r_key)){ header('Location: http://www.example.com/'); exit(); } // r_key not equal a23b24c25samplekey or empty forward main page 
bla.. bla.. bla.. 

sample.php :

$r_key = 'a23b24c25samplekey'; 
    require_once(../../passowrds.php); 

그 상대 경로를 사용할 수있다;

$path = $_SERVER['DOCUMENT_ROOT']; 
    $path .= "/yourfolder/passowrwds.php"; 
    require_once($path); 

require_once (../../ passowrds.php); $ path = $ _SERVER [ 'DOCUMENT_ROOT']보다 안전합니다. $ path. = "/yourfolder/passowrwds.php"; require_once ($ path);

+0

고마워, 내가 도움이 될 것 같아 –

+1

나는이 문제를 해결할 수있는 어떤 문제인지 전혀 모른다. 다른 말로하면, 나는 이것이 무엇을 성취 하는지를 보지 못한다. –

+0

if 목표는 파일 출력 루트를 포함하는 액세스를 차단합니다. 모든 디렉터리의 빈 인덱스를 만듭니다. 따라서 파일 이름을 몰라도 파일에 액세스 할 수 없습니다. 위의 키 시스템에 중요한 파일 (예 : index.php)을 사용하면 사용자가 액세스 할 수 없습니다. 내가 도와주지 않아서 미안해. 내 영어가 좀 약해. 안녕하세요. –

-1

는 문서 루트 위의 열려있는 절대 경로를 시행 어쨌든 무엇입니까?

나는 이것을 "상대 경로로 위의 docroot-access를 방지 할 수 있습니까?"라고 해석합니다. 대답은 다음과 같습니다. 수동으로 경로 문자열의 유효성을 검사하지 않는 것 (과도한 ".."등을 찾습니다.)

문서 루트 위의 파일을 액세스하는 가장 안전한 방법은 무엇입니까?

"가장 안전하다"는 정의에 따라 다릅니다. 이것이 문제를 일으킬 수있는 시나리오는 무엇입니까?

그러나이 작업을 제어하는 ​​사용자 입력의 유효성을 검사하는 것이 좋을 것입니다. require_once($_GET["file"]).

+0

more comment IMO, 나는하지 않았다. downtote btw – samayo

+0

@TheCOMPLETEPHPNewbie : 대답은 (불완전한 것이지만). –

+0

사용자는 스크립트를 만들 수 없으며 현재 스크립트를로드 할 수 없습니다. –

관련 문제