Walidacja uploadu
Czy mój formularz przesyłania plików przyjmuje to, co powinien, i odrzuca resztę?
Preset upload-validation buduje jednym poleceniem cały zestaw prawdziwych plików testowych do
tego pytania, a obok nich manifest.json, który mówi, jak system ma zareagować na każdy
plik. Wszystko poniżej pochodzi z programu, przy wartościach domyślnych tej wersji.
Co zwykle znajduje?
- limit sprawdzany w przeglądarce, a nie na serwerze
- plik SVG albo HTML przyjęty jako obrazek albo zwykły tekst, co jest sposobem na przemycenie skryptu przez formularz
- plik sprawdzany po rozszerzeniu i nigdy nieotwierany, więc PDF nazwany .jpg przechodzi
- formularz, który wczytuje całe żądanie do pamięci, zanim sprawdzi, jak jest duże
- plik PHOTO.JPG odrzucony tam, gdzie photo.jpg przechodzi, albo odwrotnie
- nazwa ze spacjami, nawiasami albo znakami spoza ASCII zapisana na dysk bez zmian
Co jest w zestawie?
Przy wartościach domyślnych, tak jak podaje to tfg preset show upload-validation:
| Pliki | 71 |
|---|---|
| Cele w przepisie | 22 |
| Łączny rozmiar | 120 639 488 B |
| Formaty | html, jpg, pdf, png, svg, txt |
I czego manifest tego zestawu oczekuje od Twojego systemu:
| Oczekiwanie | Znaczenie | Pliki |
|---|---|---|
accept | System powinien przyjąć plik. | 56 |
reject | System powinien odrzucić plik. | 10 |
unspecified | Zależy od reguł Twojego systemu. Ty decydujesz, a potem sprawdzasz, czy dzieje się to, co zamierzałeś. | 5 |
Co można zmienić?
| Ustawienie | Przyjmuje | Domyślnie | Co robi |
|---|---|---|---|
--limit |
rozmiar, na przykład 2mb | 10mb |
Limit rozmiaru, który deklaruje Twój formularz. Ten zestaw robi jeden krok w każdą stronę od niego - po plik w każdej odległości sięgnij po preset size-boundaries. Ta wartość domyślna jest naszą wartością zastępczą, a nie wartością Twojego systemu. Podaj własną. |
--allow |
identyfikatory formatów rozdzielone przecinkami | jpg,png,pdf |
Które typy formularz ma przyjmować. Każdy staje się prawdziwym plikiem tego typu i to one są kontrolą pozytywną całego zestawu. |
--deny |
rozszerzenia rozdzielone przecinkami | svg,html,exe,sh |
Które rozszerzenia formularz ma odrzucać. Rozszerzenie, dla którego ta wersja nie ma formatu, i tak dostaje plik pod tą nazwą, ze zwykłym tekstem w środku. |
--far-over |
10x, 2x, off | 2x |
Jak daleko za limit sięga jeden duży plik. Wyłącz go tam, gdzie zapis kilkukrotności limitu nie jest wart miejsca na dysku. |
--bulk |
0 - 10000 plików | 50 |
Ile plików ma przesyłanie masowe. Zero całkiem usuwa tę grupę z zestawu. |
Jak go uruchomić?
Sprawdź, ile zestaw będzie kosztował, zbuduj go albo weź jego przepis do edycji:
tfg preset show upload-validation
tfg generate --preset upload-validation --limit 10mb --out ./upload-validation
tfg preset eject upload-validation > upload-validation.yaml
Albo zbuduj na nim własny przepis, trzymany obok testów:
version: 1
extends: preset:upload-validation
with:
limit: 10mb