즉, aaa.xxx.yyy 일 경우 xxx와 yyy가 확장자가 되며, AddType에 등록된 내용을 체크하게 된다. (이 때 xxx 와 yyy 가 둘다 AddType으로 등록되어있으면, 마지막 yyy의 type으로 동작하게 된다. xxx만 AddType이 되어있으면 xxx의 type으로 동작하게 된다.)
ex > a.php.jpg 일 경우 jpg로 동작(즉, 파일을 다운로드 받으면 php의 소스가 보이게 된다.)
문제점
많은 게시판 에서는 "a.php." 같은 파일을 업로드할 때 마지막 확장자만 체크한다. 많은 그리고 파일 다운로드 링크를 직접URL로 사용한다. 이럴 경우 악의적 쉘이 들어있는 php 파일일 경우 해킹을 당할 수 있다.
해결책
업로드시 체크
확장자 체크방식을 업로그 금지 정규식 /\.(php|php3|php4|php5|html|htm|inc)/ 처럼 사용
다운로더.php 사용(직접링크 URL사용 금지)
다운로더.php 를 사용하면 php파싱이 되지 않고 일반 바이너리 파일로 출력만 하기 때문에 악성php가 동작하지 않는다.
아파치 설정
AddType은 사용금지
<FilesMatch "\.ph(p[2-6]?|tml)$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch> 이 구문을 대신 설정해서 사용