"exe | bat | php | js"가 아닌지 확인하고 다른 모든 유형을 허용해야합니까?
아니요. 화이트리스트는 블랙리스트보다 좋습니다. 많은 위험한 파일 유형이 있습니다. 그 4 명은 간신히 표면을 긁는다.
"xml"을 목록에 추가하면 어떻게됩니까? 보안 문제가 발생할 수 있습니까?
예 [X] [HT] ML은 서비스를 제공 한 사이트의 보안 컨텍스트에서 작동하는 스크립팅을 포함 할 수 있습니다. 귀하의 사이트에 문서를 업로드하여 귀하의 사이트에 자바 스크립트를 삽입 할 수있는 사용자를 허용합니다 (쿠키를 도용, 위조 등 요청).
그러나 실제로 여기에없는 보안 문제는 추가되지 않습니다. 파일 형식/확장명으로 허용 목록을 작성하는 것조차 안전하지 않기 때문에 IE와 그 오식 된 형식 스니핑 덕분입니다. .txt
파일을 업로드하고 Content-Type: text/plain
헤더를 사용하여 올바르게 게재 할 수 있지만 IE에 HTML처럼 보이는 시퀀스가 포함되어있는 경우 IE는 사용자를 무시하고 HTML 붐, XSS로 렌더링합니다.
(같은 정말 다른 유형의 사실이지만, 가장 공개적으로 취약가 .txt입니다.)이 엉망 고정에 대한 두 가지 접근 방식
있습니다
모든 사용자 업로드으로 게재 서로 다른 JS 보안 컨텍스트에 있고 쿠키 또는 인증 데이터를 공유하지 않도록 다른 호스트 이름의 파일을 기본 응용 프로그램 사이트에 복사합니다.
은 항상 Content-Disposition: attachment
헤더가있는 모든 사용자 업로드 파일을 제공하므로 다운로드되어 브라우저에 표시되지 않습니다.
(2) 자체에 방수해야하지만, 실제로 과거에 기인 브라우저와 플러그인 공격에 주위 방법이 있었다, 그래서 나는 내가 완전히 신뢰했던 모르겠어요. (1) 자체는 XSS를 멈추지 만 사이트를 이용하기위한 iframe을 포함하는 HTML 파일과 같은 다른 nasties는 멈추지 않습니다.
그래서 둘 다하는 것이 가장 좋습니다.
아 .. 좋은 지적. 감사. – TigerTiger