웹 루트 외부에서 구성 파일을 이동하면 실수로 아파치를 잘못 구성하면이 파일이 유출되는 것을 막을 수 있습니다. 예를 들어 Apache의 mod_php
을 제거하면 모든 .php 파일이 텍스트 파일로 취급됩니다. 나는 이런 이유로 프로덕션 시스템에서 웹 루트 외부로 이동 한 설정 파일을 보았으며 파일 유출을 막았습니다! (관리자가 업데이트 중에 구성을 확인했습니다.) 이것은 자주 발생하지 않지만. file_get_contents()
, fopen()
, readfile()
또는 fgets()
다음 그가 당신의 시스템의 모든 파일을 읽을 수 있습니다
공격자가 이러한 기능 중 하나의 경로를 제어 할 수있는 경우
. 또한 SQL 주입에 대해 걱정해야합니다. 예를 들어, MySQL 아래의이 쿼리는 파일을 읽는 데 사용할 수 있습니다 :
select load_file("/etc/passwd")
.
이 문제를 완화하려면 PHP에서 사용하는 MySQL 사용자 계정에서 FILE
권한을 제거하십시오. 또한 chmod 500 -R /path/to/web/root
을 수행하십시오. 마지막 2 개의 0은 다른 계정이 파일에 액세스하지 못하게합니다. 당신은 또한 chown www-data -R /path/to/web/root
을 따라 가야합니다. www-data는 PHP가 실행되는 사용자 계정입니다. <?php system('whoami');?>
을 실행하면이 사실을 알 수 있습니다.
루크 래드 :) 내가 물어 보자. 서버 측 프로그램에 대한 내 액세스 권한이 익숙하다고 가정하는 "cpanel"과 같은 관리자가 일반적으로 사용할 수있는 것으로 제한되는 경우 FILE 권한을 제거하거나 해당 경로를 chmod 할 수 있습니까? 내 접근이 웹 아래 한 수준으로 제한되어있는 것 같은데 ... PHP가 앉아있는 곳이라고 생각하지 않습니다. 이것은 내가 서버 관리자와 함께해야 할 일입니까? 나는 hostgator btw를 사용하고 있습니다 ... 그들에 관한 어떤 공포 이야기? –
@ Jascha 대부분의 호스팅 업체가 이미 MySQL 계정을 잠그고 있지만 hostgator에 관해서는 아무 것도 들었습니다. 테스트하기 쉽고, load_file 쿼리를 실행 해보십시오. 예, cPanel을 사용하여 파일을 chmod 할 수 있습니다. phpmyadmin을 사용하여 MySQL 권한을 변경할 수는 있지만, 부여해서는 안되는'GRANT' 권한이 필요합니다. – rook