웹 서버에 특정 확장자의 파일 업로드(HTTP POST 요청)를 제한하고 싶습니다.
간략한 설명
HTTP 요청의 POST 데이터를 분석할 때, 업로드된 콘텐츠는 다음 중 한 유형일 수 있습니다.
파일 업로드를 특정 확장명(.pdf, .docx, .exe)으로 제한하려면 AWS WAF에서 사용자 지정 웹 액세스 제어 목록(웹 ACL) 규칙을 생성하고 구성해야 합니다.
참고: AWS WAF는 요청 본문의 처음 8KB(8,192바이트)를 검사합니다. 대규모 본문 요청에 대한 자세한 내용은 AWS WAF의 크기 초과 웹 요청 구성 요소를 참조하십시오.
해결 방법
POST 데이터가 사용하는 콘텐츠 유형 식별
HTTP 요청 내의 POST 데이터는 일반적으로 양식 데이터 또는 바이너리를 사용합니다.
- 양식 데이터에는 HTTP가 웹 서버로 전송 또는 게시하는 웹 페이지 또는 HTML 양식에 사용자가 입력하는 모든 데이터가 포함됩니다.
- 바이너리 페이로드는 텍스트 페이로드 외의 모든 페이로드입니다. 예를 들어, 바이너리 페이로드는 .jpeg 파일, .gzip 파일 또는 .xml 파일일 수 있습니다. 여기에는 .pdf 애플리케이션, .jpeg 이미지 또는 .zip 애플리케이션과 같은 일반 바이너리 데이터가 포함됩니다. 모든 파일 확장자 유형에 관해서는 Internet Assigned Numbers Authority(IANA) 웹사이트의 Media types를 참조하십시오.
POST 요청 유형을 식별하려면 HTTP POST 헤더의 Content-Type 값을 확인하십시오. 예를 들면 다음과 같습니다.
Content-Type: multipart/form-data
Content-Type 출력에 따라 헤더 값과 일치하는 적절한 섹션을 참조하십시오.
멀티파트/양식 데이터 콘텐츠에 대한 규칙 생성
다음 단계를 완료하십시오.
- AWS WAF 콘솔을 엽니다.
- 탐색 창에서 AWS WAF를 선택합니다.
- 리소스 및 보호 팩을 선택합니다.
- 보호 팩을 선택합니다.
- 선택한 보호 팩에서 규칙을 선택합니다.
- 보호 팩과 연결된 규칙을 보거나 수정하려면 규칙 옆에 있는 보기 및 편집을 선택합니다.
- 규칙 관리의 오른쪽 창에서 규칙 추가를 선택합니다.
- 새 규칙 생성을 선택합니다.
- 사용자 지정 규칙을 선택하고 다음을 선택합니다.
- 규칙 유형에서 사용자 지정 규칙을 선택하고 다음을 선택합니다.
- 규칙을 설정하려면 다음 값을 구성합니다.
작업에서 사용자 지정 규칙의 차단을 선택합니다.
이름에 이 규칙을 식별하는 이름을 입력합니다.
요청이 다음과 같은 경우에서 문과 일치를 선택합니다. 그리고 문에서 다음 필드를 설정합니다.
검사에서 JSON 본문을 선택합니다.
JSON 일치 범위에 값을 선택합니다.
잘못된 JSON 본문 요청에 대한 조치에서 적합한 옵션을 선택합니다.
검사할 콘텐츠에 전체 JSON 콘텐츠를 선택합니다.
일치 유형에 정규식 일치를 선택합니다.
정규식에 일치시킬 정규식 패턴을 입력합니다. 다음 예시를 참조하십시오.
(?:.pdf|.doc|.docx|.ppt)
- (선택 사항) 텍스트 변환에서 텍스트 변환을 추가하거나 이러한 필드를 없음으로 유지합니다.
- 크기 초과 처리에서 사용 사례에 적합한 옵션을 선택합니다.
- 규칙 생성을 선택합니다.
- 저장을 선택합니다.
바이너리 값에 대한 규칙 생성
다음 단계를 완료하십시오.
- AWS WAF 콘솔을 엽니다.
- 탐색 창에서 AWS WAF를 선택합니다.
- 리소스 및 보호 팩을 선택합니다.
- 보호 팩을 선택합니다.
- 선택한 보호 팩에서 규칙을 선택합니다.
- 보호 팩과 연결된 규칙을 보거나 수정하려면 규칙 옆에 있는 보기 및 편집을 선택합니다.
- 규칙 관리의 오른쪽 창에서 규칙 추가를 선택합니다.
- 새 규칙 생성을 선택합니다.
- 사용자 지정 규칙을 선택하고 다음을 선택합니다.
- 규칙 유형에서 사용자 지정 규칙을 선택하고 다음을 선택합니다.
- 규칙을 설정하려면 다음 값을 구성합니다.
작업에서 사용자 지정 규칙의 차단을 선택합니다.
이름에 이 규칙을 식별하는 이름을 입력합니다.
요청이 다음과 같은 경우에서 문과 일치를 선택합니다.
문에서 다음 필드를 설정합니다.
검사에 단일 헤더를 선택합니다.
헤더 필드 이름에 Content-Type을 입력합니다.
일치 유형에 정규식 일치를 선택합니다.
정규식에 일치시킬 정규식 패턴을 입력합니다.
.pdf 및 .jpeg 파일의 경우 다음 예시와 같습니다.
(?:pdf|jpeg)
- (선택 사항) 텍스트 변환에서 텍스트 변환을 추가하거나 이러한 필드를 없음으로 유지합니다.
- 규칙 생성을 선택합니다.
참고: 특정 업로드 URI 경로에 대한 규칙을 제한하려면 경로를 검사하는 웹 ACL 규칙 내에서 AND 문을 사용하십시오.