Uploadvalidatie
Neemt mijn uploadformulier aan wat het moet en weigert het de rest?
De preset upload-validation bouwt met één opdracht een hele set echte testbestanden voor deze
vraag, en een manifest.json ernaast dat zegt hoe je systeem op elk bestand moet
reageren. Alles hieronder wordt uit het programma gelezen, bij de standaardwaarden van deze
versie.
Wat vindt hij meestal?
- een limiet die in de browser wordt afgedwongen en niet op de server
- een SVG- of HTML-bestand dat voor een afbeelding of platte tekst wordt aangezien, een manier om een script langs een formulier te smokkelen
- een bestand dat op extensie wordt gecontroleerd en nooit geopend, zodat een PDF met de naam .jpg erdoor komt
- een formulier dat de hele body in het geheugen leest voordat het kijkt hoe groot hij is
- een upload met de naam PHOTO.JPG die wordt geweigerd terwijl photo.jpg wordt aangenomen, of andersom
- een naam met spaties, haakjes of tekens buiten ASCII die ongewijzigd naar schijf wordt geschreven
Wat zit er in de set?
Bij de standaardwaarden, zoals tfg preset show upload-validation het meldt:
| Bestanden | 71 |
|---|---|
| Targets in het recept | 22 |
| Totale grootte | 120 639 488 B |
| Formaten | html, jpg, pdf, png, svg, txt |
En wat het manifest van die set van je systeem verwacht:
| Verwacht | Betekenis | Bestanden |
|---|---|---|
accept | Je systeem moet het bestand aannemen. | 56 |
reject | Je systeem moet het bestand weigeren. | 10 |
unspecified | Het hangt af van de regels van je systeem. Jij beslist, en controleert daarna of wat er gebeurt is wat je bedoelde. | 5 |
Wat kun je wijzigen?
| Instelling | Accepteert | Standaard | Wat het doet |
|---|---|---|---|
--limit |
een grootte zoals 2mb | 10mb |
De groottelimiet die je uploadformulier opgeeft. Deze set zet één stap aan beide kanten - voor een bestand op elke afstand draai je de preset size-boundaries. Deze standaardwaarde is onze tijdelijke waarde, niet de waarde van je systeem. Geef je eigen op. |
--allow |
formaat-id's gescheiden door komma's | jpg,png,pdf |
Welke typen je formulier moet accepteren. Elk wordt een echt bestand van dat type, en ze vormen de positieve controle van de hele set. |
--deny |
extensies gescheiden door komma's | svg,html,exe,sh |
Welke extensies je formulier moet weigeren. Een extensie waarvoor deze build geen formaat heeft, krijgt toch een bestand met die naam, met platte tekst erin. |
--far-over |
10x, 2x, off | 2x |
Hoe ver boven de limiet het ene grote bestand komt. Zet het uit waar het schrijven van een veelvoud van de limiet de schijfruimte niet waard is. |
--bulk |
0 - 10000 bestanden | 50 |
Hoeveel bestanden de bulkupload bevat. Nul laat die groep helemaal uit de set. |
Hoe draai je hem?
Bekijk wat de set zou kosten, bouw hem, of neem zijn recept om te bewerken:
tfg preset show upload-validation
tfg generate --preset upload-validation --limit 10mb --out ./upload-validation
tfg preset eject upload-validation > upload-validation.yaml
Of bouw erop voort in een eigen recept, naast je tests:
version: 1
extends: preset:upload-validation
with:
limit: 10mb