Upload-Validierung
Nimmt mein Upload-Formular an, was es soll, und weist den Rest ab?
Das Preset upload-validation baut mit einem Befehl ein ganzes Set echter Testdateien für diese
Frage und ein manifest.json daneben, das beschreibt, wie dein System auf jede Datei
reagieren soll. Alles unten wird aus dem Programm gelesen, mit den Standardwerten dieser Version.
Was findet es meistens?
- ein Limit, das im Browser durchgesetzt wird und nicht auf dem Server
- eine SVG- oder HTML-Datei, die für ein Bild oder für einfachen Text gehalten wird, womit sich ein Skript an einem Formular vorbeischleusen lässt
- eine Datei, die nur an der Endung geprüft und nie geöffnet wird, sodass ein PDF namens .jpg durchgeht
- ein Formular, das den ganzen Body in den Speicher liest, bevor es nachsieht, wie groß er ist
- ein Upload namens PHOTO.JPG, der abgewiesen wird, während photo.jpg durchkommt, oder umgekehrt
- ein Name mit Leerzeichen, Klammern oder Zeichen außerhalb von ASCII, der unverändert auf die Platte geschrieben wird
Was steckt im Set?
Mit den Standardwerten, wie es tfg preset show upload-validation ausgibt:
| Dateien | 71 |
|---|---|
| Targets in seinem Rezept | 22 |
| Gesamtgröße | 120 639 488 B |
| Formate | html, jpg, pdf, png, svg, txt |
Und was das Manifest dieses Sets von deinem System erwartet:
| Erwartet | Bedeutung | Dateien |
|---|---|---|
accept | Dein System soll die Datei annehmen. | 56 |
reject | Dein System soll die Datei abweisen. | 10 |
unspecified | Das hängt von den Regeln deines Systems ab. Du entscheidest, dann prüfst du, ob das Ergebnis dem entspricht, was du gemeint hast. | 5 |
Was kannst du ändern?
| Einstellung | Nimmt | Standard | Was es tut |
|---|---|---|---|
--limit |
eine Größe wie 2mb | 10mb |
Das Größenlimit, das dein Upload-Formular angibt. Dieses Set geht je einen Schritt auf beiden Seiten davon - für eine Datei in jedem Abstand führe das Preset size-boundaries aus. Dieser Standardwert ist unser Platzhalter, nicht der Wert deines Systems. Gib deinen eigenen an. |
--allow |
Format-IDs, durch Kommas getrennt | jpg,png,pdf |
Welche Typen dein Formular akzeptieren soll. Jeder wird zu einer echten Datei dieses Typs, und sie sind die positive Kontrolle des ganzen Sets. |
--deny |
Endungen, durch Kommas getrennt | svg,html,exe,sh |
Welche Endungen dein Formular abweisen soll. Für eine Endung, zu der dieser Build kein Format hat, wird trotzdem eine Datei mit diesem Namen geschrieben, die einfachen Text enthält. |
--far-over |
10x, 2x, off | 2x |
Wie weit über dem Limit die eine große Datei liegt. Schalte sie ab, wo es das Vielfache des Limits auf der Platte nicht wert ist. |
--bulk |
0 - 10000 Dateien | 50 |
Wie viele Dateien der Massen-Upload enthält. Bei null fällt diese Gruppe ganz aus dem Set. |
Wie führst du es aus?
Sieh nach, was das Set kosten würde, baue es oder nimm sein Rezept zum Bearbeiten:
tfg preset show upload-validation
tfg generate --preset upload-validation --limit 10mb --out ./upload-validation
tfg preset eject upload-validation > upload-validation.yaml
Oder baue in einem eigenen Rezept darauf auf, neben deinen Tests:
version: 1
extends: preset:upload-validation
with:
limit: 10mb