내 웹사이트에는 다른 PHP 파일에 포함하는 PHP 파일이 있습니다. 이 파일은 내 DB 연결 및 기타 다양한 기능과 같은 다양한 작업을 수행합니다... 이제 내 파일의 지정된 경로를 알고 있으므로 경로를 제공할 수 있습니다. 좋다
http://www.mysite.com/myfiles/
그러면 해당 디렉토리에 있는 파일의 디렉토리 목록이 제공됩니다.
나는 디렉토리 목록을 피하는 방법을 알고 있습니다. 파일 이름을 입력하거나 index.html
디렉토리 index.php
목록 대신 그렇게 함으로써
하지만 여전히 파일의 경로를 알고 있습니다. http://www.mysite.com/myfiles/con.php
이렇게 하면 코드가 실행되지만 클라이언트 측이기 때문에 OFFCourse 소스를 볼 수 있습니다.
하지만 누군가 경로를 알고 있을 때 소스 코드가 포함된 PHP 파일을 가져올 수 있는 방법이 있습니까? 그렇지 않으면 보안상 위험할 것입니다.
답변1
우선, include 디렉토리의 .htaccess 파일에 다음 행을 추가하여 디렉토리 목록을 비활성화할 수 있어야 합니다(그러면 쓸모 없는 index.php 파일로 디렉토리 트리를 오염시킬 필요가 없게 됩니다).
Options -Indexes
이제 사용자가 PHP 소스 코드를 얻을 수 있다는 것과 관련하여 웹 서버가 PHP 파일을 해석하고 직접 제공하는 것이 아니라 올바르게 설정되어 있는 한 괜찮을 것입니다(포함 파일에 echo()
변수가 없다고 가정) 또는 그런 어리석은 것).
답변2
PHP 파일에 대해 AddType 또는 SetHandler를 정의한 경우 클라이언트에 제공하기 전에 Apache/웹 서버에서 해석됩니다. 따라서 클라이언트는 PHP 소스를 볼 수 없고 생성된 HTML만 볼 수 있습니다.
답변3
내가 당신을 올바르게 이해했다면, 당신은 PHP 파일의 실제 URL을 아는 사람들을 위해 PHP 소스를 얻고 싶습니다. 그런 것을 사용할 수도 있지만 기억하세요. 실제 보안은 아니므로 DB 사용자/비밀번호 등과 같은 개인 정보가 포함된 PHP 파일에는 포함하지 않는 것이 좋습니다.
<?php
if($_GET['hash'] === "jV1V-7-VhS09K-_77GtEoOd86K2-ba-W") {
show_source(__FILE__);
}
?>
이렇게 하면 "해시"를 아는 사람(그리고 당신을 무차별 공격하는 사악한 사람)만 다음으로 이동하여 해당 소스 코드를 얻을 수 있습니다.http://example.org/myfiles/con.php?hash=jV1V-7-VhS09K-_77GtEoOd86K2-ba-W.