2012-01-09 2 views
2

파일 업로드를 보호하는 것에 대해서는 많은 기사에서 블랙리스트 대신 확장명의 흰색 목록을 준비하는 것이 좋습니다. 하지만이 방법은 이중 확장 파일에 몇 가지 문제가있는 것으로 보입니다. 예를 들어 'pdf', 'doc', 'docx'와 같은 화이트리스트가 있지만이 화이트리스트는 apple.php.doc 또는 apple.doc.php에 대해 true를 반환합니다.두 배 확장은 확장 검사 규칙을 무시합니다.

보안 확장 프로그램 기능을 작성하려면 어떻게해야합니까? 확장이 좋은 경우

+3

'apple.php.doc'의 문제점은 무엇입니까? – zerkms

+1

이 같은 '이중 확장'은 어디에 문제가됩니까? 나는 더 이상 윈도우를 사용하지 않지만'.doc '이 os 나 프로그램에 중요한 의미를 갖기 전에'.php'(또는'.exe')를 상상하지 않습니다. (분명히 apple.doc.php가 잠재적으로 문제를 제기 할 수 있습니다.) –

+0

그래서 마지막 확장자를 검증해야합니다. –

답변

0

이 이유를 이해하려고 노력한다, 당신의 질문이 이해가되지 않습니다.

특정 확장자를 허용해서는 안되는 이유는 아파치와 같은 일부 웹 서버가 파일을 기반으로 서버의 방식을 결정하기 때문입니다. 물론 공개적으로 제공하는 디렉토리의 파일에만 적용됩니다 업로드 된 파일이 이동하는 시간대에 서버가 .php와 같이 실행될 확장명을 허용하면 웹상의 임의의 사용자가 귀하의 사이트에 코드를 삽입 할 수 있습니다.

확장자가 .doc이기 때문에 .php.doc에서 발생하지 않으므로 서버가 이와 같이 처리합니다.

디렉토리 안에 특정 파일을 실행하지 않도록 웹 서버를 구성 할 수는 있지만 실제로 기본값이 아니며 실제로 그렇게하는 사람은 거의 없습니다.

+0

여기에서 이중 확장 정보 확인 : www.acunetix.com/websitesecurity/ upload-forms-threat/ addHandler php5-script .doc을 httpd.conf에 추가하고 file.php.doc가 실행됩니다. – carlos

3

사용이 코드를 확인합니다 :

$valid_exts = array('doc', 'pdf'); 
if (in_array(pathinfo($filename, PATHINFO_EXTENSION), $valid_exts)) { 
    // everything is fine 
} else { 
    // not fine 
} 
관련 문제