파일 업로드 취약점을 방지하는 방법

파일 업로드 취약점을 방지하는 방법
당신과 같은 독자는 MUO를 지원하는 데 도움이 됩니다. 귀하가 당사 사이트의 링크를 사용하여 구매하면 당사는 제휴 수수료를 받을 수 있습니다. 자세히 알아보기

파일 업로드 모듈은 웹 애플리케이션에서 가장 약한 링크 중 하나입니다. 사소한 실수라도 서버 제어가 사이버 공격자의 손에 직접 들어갈 수 있습니다. 이러한 이유로 소프트웨어 개발자는 가장 일반적인 실수와 발생할 수 있는 몇 가지 공격 방법을 알아야 합니다.





오늘의 메이크업 비디오

그렇다면 클라이언트 측 변조란 무엇입니까? 사이트와 사용자를 안전하게 보호하기 위해 어떻게 대처할 수 있습니까?





클라이언트 측 변조란 무엇입니까?

클라이언트 측 변조는 전체적으로 웹 애플리케이션 공격의 기본 개념입니다. 간단히 말해서 사용자에게 보내는 데이터를 더 이상 신뢰할 수 없다는 의미입니다. 또한 클라이언트 측 변조는 안전한 애플리케이션 개발의 기초 중 하나입니다. 처리 중인 파일 업로드 모듈을 검사하고 클라이언트 측 변조를 고려하는 경우 신뢰할 수 없는 데이터에는 다음이 포함됩니다.





  • 업로드된 파일의 이름입니다.
  • 업로드된 파일의 Content-Type입니다.

이 두 항목은 어디에 화이트리스트에 추가할 기회가 있습니다 소프트웨어 개발자로서. 업로드된 파일의 이름 데이터에는 클라이언트 측 변조가 있는 모든 항목이 포함될 수 있습니다. 업로드된 파일의 Content-Type 데이터로 인해 공격자가 .exe 파일을 업로드하더라도 이 파일이 시스템에서 이미지/jpeg로 나타날 수 있습니다.

알 수 없는 USB 장치(장치 설명자 요청 실패) Windows 10

파일 확장자 및 화이트리스트

 시스템에 업로드된 파일 확장자 확인

파일 업로드 모듈을 개발하면서 가장 먼저 해야 할 일은 파일 확장자에 대한 화이트리스트 프로세스 . 예를 들어 사용자가 'muo.jpeg'라는 파일을 업로드하려고 합니다. 사용자가 업로드하려는 이 파일 확장자가 .jpeg인지 확인해야 합니다. 이를 위해 시스템은 업로드된 파일을 확인하고 허용된 파일 확장자 중 하나인지 확인해야 합니다. 이를 수행하는 방법을 이해하려면 다음의 간단한 PHP 코드를 살펴보십시오.



$file_parts = pathinfo($filename);
switch($file_parts['extension'])
{
case "jpg":
break;

case "bat": // Or exe, dll, so, etc.
break;

case "":
case NULL: // No file extension
break;
}

위와 유사한 코드 블록으로 이를 수행하거나 사용 중인 프레임워크에서 제공하는 클래스 및 함수를 사용할 수 있습니다.