2012-07-09 5 views
0

파일 업로드 및 다운로드 기능이있는 사이트의 공격에 대해 읽었습니다. 일부 공격은 정말로 HTML 파일 인 jpg를 업로드하는 것과 사용자가 HTML을 저장하고 다운로드하도록 허용할지 (또는 브라우저에서 저장 기능을 사용하여 볼 수있게하려는 경우)에 대한 설명입니다.http 응답에서 플래그를 실행하지 않습니까?

실행할 수없는 플래그를 사용할 수 있습니까? 사용자가 다른 사람이 업로드 한 이미지 또는 비디오 파일을 보길 원합니다. 내가 사용자 html을 표시하고 싶지만 사용자가 다운로드하도록 강요하고 싶다면 (콘텐츠 배치 첨부) 어떻게해야할까요?

여기에 사용자 데이터가 있습니다. img src가 작동하도록 이미지가 될 수 있습니다. 그것은 HTML 수 있으므로 사용자가 그것을 볼 수 있지만 쿠키 읽기/쓰기/localstorage/아약스 요청/etc 호출 할 수 없습니까?

-edit- 생각해보십시오. 모든 사용자 데이터는 정적 파일 용 자체 쿠키없는 하위 도메인에서 호스팅됩니다. 그것은 내가 언급 한 많은 문제들을 제거 할 것이지만 그 밖에 처리해야 할 것은 무엇인가? 또한 내 mime 응답을 완전히 내 웹 서버 (nginx atm) 단순히 파일 확장명을 볼 수있는 의존하는 믿습니다.

-edit2- application/unknown Content-Type을 추가하기 위해 내 nginx config를 조정했습니다. 그것은 내가 원하는 것을 정확하게하는 것처럼 보입니다. 알 수없는 파일에 대해 옥텟 스트림을 사용하라는 제안을 보았습니다.하지만 jpg를 브라우저에서 볼 수있는 경우에도 브라우저에서 Firefox를 다운로드하려고했습니다.

답변

1

모두 HTTP 응답의 Content-Type에 따라 다릅니다.

브라우저는 HTTP 응답으로 Content-Type에 의해 반환 된 데이터를 처리합니다.

예를 들어

하자가 사용자가 한 웹 서버가 제공으로, 가정으로 사진 업로드에 대한 업로드 필드에 HTML 파일을 업로드 말한다면 Content-Typeimage/jpeg로 (또는 image/png 등) 브라우저가 이미지로 처리해야 - 및 이미지에 잘못된 바이너리가 들어 있기 때문에이 경우 잘못된 이미지가 표시됩니다.

안전하지 않은 경우 업로드 확인 중에 파일 데이터를 항상 들여다 볼 수 있습니다.

+0

서버를 추측하도록합니다. 만약 내가 file.jpg 경우에도 자사의 GIF는 서버 (nginx 내 선택 atm입니다) 물건을하고 그것을 jpg (내가 havent Gif를 사용하는 경우 어떻게되는지 테스트) 호출합니다. 하지만 브라우저에서 어떤 유형인지 추측하고 mimes를 무시한다고 들었습니다. 그러나 나는 그들이 브라우저 문제를 내 물건이 아닌 물건을 실행하는 경우 같아요? –

+1

올바른 MIME 형식으로 응답하고 브라우저가 대신 HTML 파일로 표시하면 브라우저 문제 일 수 있습니다. 그들은 표준에 따라'Content-Type'을 듣기로되어 있습니다. – mauris

+0

+1. 나는 오늘 밤에이 물건들로 어리석은 짓을할지 모른다. –

관련 문제