서버에서 사용자가 업로드 한 파일을 열거 나 실행 한 적이 있으면 서버가 손상되었을 것으로 예상됩니다.
JPG도 실행 가능한 PHP를 포함 할 수 있습니다. include
또는 require
파일을 스크립트에 저장하면 서버가 손상 될 수 있습니다. 당신이 웹상에서 우연히 발견 한 이미지는 이렇게 게재되었습니다 ...서버에 phpinfo()
를 실행합니다 저장하고 그래서 같이 자신의 서버에 재 호스트
header('Content-type: image/jpeg');
header('Content-Disposition: inline; filename="test.jpg"');
echo file_get_contents('/some_image.jpg');
echo '<?php phpinfo(); ?>';
...
$q = $_GET['q']; // pretend this is sanitized for the moment
header('Content-type: '.mime_content_type($q));
header('Content-Disposition: inline; filename="'.$_GET['q'].'"');
include $q;
.... 그러면 사이트 사용자는 단순히 이미지를 바탕 화면에 저장하고 메모장으로 열어 서버 설정을 볼 수 있습니다. 단순히 파일을 다른 형식으로 변환하면 해당 스크립트가 삭제되고 파일에 첨부 된 실제 바이러스는 트리거되지 않습니다.
업로드 할 때 바이러스 검색을하는 것이 가장 좋습니다. 검사기에 대한 인라인 시스템 명령을 수행하고 출력을 구문 분석하여 발견되는지 확인해야합니다. 사이트 사용자는 어쨌든 다운로드 한 파일을 확인해야합니다.
그렇지 않으면 서버에 앉아서 바이러스를 업로드 한 사용자 업로드 파일조차도 내가 아는 한 아무 것도 해가되지 않아야합니다. 이 시체는 URL별로 액세스 할 수 없었다 의미 당신의 WWW 폴더 외부에 넣어 당신은 (ReadFile을 사용해야합니다 최고의 : 하나 더 나은 가장 안전한 다른 서버에 넣어 파일 업로드 파일에
'mime_get_contents()'가 존재합니까? 'mime_content_type()'을 의미합니까? – alex
@alex - oops! 너의 권리. 그것을 file_get_contents와 혼합합니다. 나는 그것을 고치기 위해 나의 지위를 바꾸고있다. 감사! – Cfreak