문제

사용자가 ASP 페이지를 사용하여 사진을 업로드하는 데 사용되는 웹 서버에 폴더가 있습니다.

폴더에 IUSR 쓰기 권한을 부여해도 안전합니까?다른 것을 확보해야 합니까?해커가 ASP 페이지를 우회하여 콘텐츠를 폴더에 직접 업로드할까봐 두렵습니다.

저는 Windows 2003 Server에서 ASP 클래식과 IIS6을 사용하고 있습니다.업로드는 FTP가 아닌 HTTP를 통해 이루어집니다.

편집하다:명확성을 위해 질문을 변경하고 답변을 의견으로 변경합니다.

도움이 되었습니까?

해결책

또한 사용자가 웹에서 접근할 수 있는 폴더에 업로드하는 것을 허용하지 않는 것이 좋습니다.최상의 MIME 유형 감지도 실패할 수 있으며 MIME 스니핑이 실패했지만 IIS의 검색은 올바르게 작동하는 경우 사용자가 jpeg로 위장한 실행 파일을 업로드하는 것을 절대 원하지 않습니다.

PHP 세계에서는 공격자가 악성 PHP 스크립트를 업로드하고 나중에 웹 서버를 통해 액세스할 수 있기 때문에 상황은 더욱 심각합니다.

항상 업로드된 파일을 문서 루트 외부의 디렉터리에 저장하고 추가 삭제를 수행하는 일부 액세스 스크립트를 통해 해당 파일에 액세스합니다(적어도 이미지나 MIME 유형에 관계없이 명시적으로 설정합니다.

다른 팁

사용자는 사진을 어떻게 업로드합니까?업로드된 파일을 허용하기 위해 ASP 페이지를 작성하는 경우 IIS가 파일 I/O를 수행하므로 IIS를 실행하는 사용자에게만 폴더에 대한 쓰기 권한이 필요합니다.ASP 페이지는 파일 크기를 확인하고 해커가 하드 드라이브를 채우는 것을 방지하기 위한 일종의 인증 기능을 갖추고 있어야 합니다.

FTP 서버나 다른 파일 전송 방법을 설정하는 경우 선택한 방법에 따라 대답이 달라집니다.

쓰기 권한을 부여해야 하지만 파일의 MIME 유형을 확인하여 이미지를 확인할 수 있습니다.FSO를 다음과 같이 사용할 수 있습니다.

set fs=Server.CreateObject("Scripting.FileSystemObject")
set f=fs.GetFile("upload.jpg")
'image mime types or image/jpeg or image/gif, so just check to see if "image" is instr
if instr(f.type, "image") = 0 then
   f.delete
end if
set f=nothing
set fs=nothing

또한 대부분의 업로드 COM 개체에는 파일을 쓰기 전에 확인할 수 있는 유형 속성이 있습니다.

비용 대비 가장 좋은 방법은 웹 사이트에서 액세스할 수 없는 폴더에서 파일을 업로드/다운로드할 수 있는 업로드 구성 요소(저는 ASPUpload를 사용했습니다)를 사용하는 것입니다.

일부 인증 후크를 얻을 수 있으며 파일은 구성 요소를 통해서만 사용할 수 있으므로 누군가가 우연히 폴더를 탐색하고 파일을 다운로드(또는 귀하의 경우 업로드)하는 것에 대해 걱정할 필요가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top