업로드 검증
제 업로드 양식은 받아야 할 것을 받고 나머지는 거부할까요?
upload-validation 프리셋은 이 질문에 대한 실제 테스트 파일 세트 전체를 명령 하나로 만들고, 그 옆에 시스템이 각 파일에 어떻게 반응해야 하는지 알려 주는
manifest.json을 둡니다. 아래의 모든 내용은 이 버전의 기본값으로 프로그램에서 읽어 온 것입니다.
보통 무엇을 찾아내나요?
- 서버가 아니라 브라우저에서만 적용되는 한도
- 이미지나 일반 텍스트로 오인되는 SVG 또는 HTML 파일로, 스크립트가 양식 검사를 통과하는 방법이 됩니다
- 확장자로만 검사하고 열어 보지 않아서 .jpg라는 이름의 PDF가 통과하는 파일
- 크기를 확인하기 전에 본문 전체를 메모리로 읽어 들이는 양식
- photo.jpg는 받으면서 PHOTO.JPG는 거부하거나 그 반대인 업로드
- 공백, 괄호, ASCII 이외의 문자가 든 이름이 그대로 디스크에 쓰이는 문제
세트에는 무엇이 들어 있나요?
기본값에서 tfg preset show upload-validation가 보고하는 대로입니다.
| 파일 수 | 71 |
|---|---|
| 레시피의 타깃 수 | 22 |
| 총 크기 | 120 639 488 B |
| 형식 | html, jpg, pdf, png, svg, txt |
그리고 그 세트의 매니페스트가 시스템에 기대하는 것:
| 기대값 | 의미 | 파일 수 |
|---|---|---|
accept | 시스템은 이 파일을 받아야 합니다. | 56 |
reject | 시스템은 이 파일을 거부해야 합니다. | 10 |
unspecified | 시스템의 규칙에 따라 다릅니다. 직접 결정한 뒤 실제 일어나는 일이 의도한 것인지 확인하세요. | 5 |
무엇을 바꿀 수 있나요?
| 설정 | 값 | 기본값 | 동작 |
|---|---|---|---|
--limit |
2mb와 같은 크기 | 10mb |
업로드 양식이 선언한 크기 한도입니다. 이 세트는 한도 양쪽으로 한 단계씩 만듭니다. 모든 거리의 파일이 필요하면 size-boundaries 프리셋을 실행하세요. 이 기본값은 우리 쪽의 임시값이며 여러분 시스템의 값이 아닙니다. 직접 값을 지정하세요. |
--allow |
쉼표로 구분한 형식 id | jpg,png,pdf |
양식이 받아야 할 유형입니다. 각 유형이 해당 유형의 실제 파일이 되며, 세트 전체의 양성 대조군이 됩니다. |
--deny |
쉼표로 구분한 확장자 | svg,html,exe,sh |
양식이 거부해야 할 확장자입니다. 이 빌드에 형식이 없는 확장자도 그 이름의 파일이 만들어지며, 내용은 일반 텍스트입니다. |
--far-over |
10x, 2x, off | 2x |
하나뿐인 큰 파일이 한도를 얼마나 넘는지입니다. 한도의 몇 배를 쓰는 것이 디스크 낭비라면 꺼 두세요. |
--bulk |
0 - 10000 파일 | 50 |
대량 업로드에 포함할 파일 수입니다. 0이면 그 그룹은 세트에서 완전히 빠집니다. |
어떻게 실행하나요?
세트의 비용을 확인하고, 만들거나, 편집할 레시피를 꺼냅니다.
tfg preset show upload-validation
tfg generate --preset upload-validation --limit 10mb --out ./upload-validation
tfg preset eject upload-validation > upload-validation.yaml
또는 테스트 옆에 둔 직접 만든 레시피에서 이를 바탕으로 이어 갑니다.
version: 1
extends: preset:upload-validation
with:
limit: 10mb