Проверка загрузки
Принимает ли моя форма загрузки то, что должна, и отклоняет ли остальное?
Пресет upload-validation одной командой собирает целый набор настоящих тестовых файлов для
этого вопроса и рядом manifest.json с ожидаемой реакцией вашей системы на каждый
файл. Всё ниже прочитано из программы со значениями по умолчанию этой версии.
Что он обычно находит?
- лимит, который применяется в браузере, а не на сервере
- SVG или HTML, принятый за картинку или простой текст, что позволяет провести скрипт через форму
- файл, проверенный по расширению и ни разу не открытый, так что PDF с именем .jpg проходит
- форма, которая читает всё тело в память, прежде чем посмотреть, насколько оно велико
- загрузка с именем 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 |
Сколько файлов в массовой загрузке. Ноль полностью убирает эту группу из набора. |
Как его запустить?
Посмотрите, чего стоил бы набор, соберите его или возьмите его рецепт для правки:
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