누군가가이 문제에 관해 의견을 나눌 수 있기를 바랍니다.PHP가 documentroot 위의 문서를 여는 것을 막으십시오.
내 PHP 스크립트는 현재 문서 루트 위의 파일을 require_once (../../ passowrds.php)와 같은 상대 경로를 사용하여 열 수 있습니다.
1) 어쨌든 문서 루트 위에 절대 경로를 열어두고 있습니까?
2) 문서 루트 위의 파일에 액세스하는 가장 안전한 방법은 무엇입니까? 사전에
감사
누군가가이 문제에 관해 의견을 나눌 수 있기를 바랍니다.PHP가 documentroot 위의 문서를 여는 것을 막으십시오.
내 PHP 스크립트는 현재 문서 루트 위의 파일을 require_once (../../ passowrds.php)와 같은 상대 경로를 사용하여 열 수 있습니다.
1) 어쨌든 문서 루트 위에 절대 경로를 열어두고 있습니까?
2) 문서 루트 위의 파일에 액세스하는 가장 안전한 방법은 무엇입니까? 사전에
감사
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);
고마워, 내가 도움이 될 것 같아 –
나는이 문제를 해결할 수있는 어떤 문제인지 전혀 모른다. 다른 말로하면, 나는 이것이 무엇을 성취 하는지를 보지 못한다. –
if 목표는 파일 출력 루트를 포함하는 액세스를 차단합니다. 모든 디렉터리의 빈 인덱스를 만듭니다. 따라서 파일 이름을 몰라도 파일에 액세스 할 수 없습니다. 위의 키 시스템에 중요한 파일 (예 : index.php)을 사용하면 사용자가 액세스 할 수 없습니다. 내가 도와주지 않아서 미안해. 내 영어가 좀 약해. 안녕하세요. –
는 문서 루트 위의 열려있는 절대 경로를 시행 어쨌든 무엇입니까?
나는 이것을 "상대 경로로 위의 docroot-access를 방지 할 수 있습니까?"라고 해석합니다. 대답은 다음과 같습니다. 수동으로 경로 문자열의 유효성을 검사하지 않는 것 (과도한 ".."등을 찾습니다.)
문서 루트 위의 파일을 액세스하는 가장 안전한 방법은 무엇입니까?
"가장 안전하다"는 정의에 따라 다릅니다. 이것이 문제를 일으킬 수있는 시나리오는 무엇입니까?
그러나이 작업을 제어하는 사용자 입력의 유효성을 검사하는 것이 좋을 것입니다. require_once($_GET["file"])
.
more comment IMO, 나는하지 않았다. downtote btw – samayo
@TheCOMPLETEPHPNewbie : 대답은 (불완전한 것이지만). –
사용자는 스크립트를 만들 수 없으며 현재 스크립트를로드 할 수 없습니다. –
"루트 의미 이상의 문서" – samayo
@TheCOMPLETEPHPNewbie "문서 루트"는 웹 서버가 가리키는 디렉토리이며 "/ var/www/myapp/htdocs"일 수 있습니다. "/ var/www/myapp", "/ var/www", "/ var"및 "/"디렉토리가있는 위의 "위" (또한 "/ var/www/someonelsesapp"와 같은 그 자식들도 암시 적으로) – IMSoP
시나리오에 대한 배경 지식이 있다면 유용 할 것입니다. 신뢰할 수없는 사용자가 자신의 PHP 파일을 업로드 할 수있게하려고합니까? 실행할 수있는 코드를 제한하고 싶습니까? 그렇다면'file_get_contents' 또는 유사 코드를 실행하여 코드를 "도용"할 수 있다고 생각 해본 적이 있습니까? – IMSoP