Estimated reading time : 3 min · Published October 1, 2026
Justify the request and show limits
Explain which document is needed and what decision it supports. Consider simple fields if they can achieve the same result. Before selection, state formats, count and size limits and an alternative for unsuitable documents.
Do not require unnecessary personal information. Use synthetic files for acceptance testing. Separate publication approval from receipt: receiving a photograph does not automatically establish permission to publish it.
Check content on the server
OWASP describes complementary controls including allowed formats, type validation, controlled storage names, limits and protected storage. A browser-supplied type alone does not establish file content. Interface checks supplement rather than replace server checks.
Have the software owner review processing. Define handling for files requiring analysis, damaged documents and rejected content. A scan or recognised extension should not be presented as an absolute safety guarantee.
Test the journey to its recipient
Try an allowed file, oversized file, rejected format, accented name and interrupted transfer. Verify that users understand acceptance and required corrections. Do not display success when transfer has not completed.
Check arrival in the correct work queue and access by an authorised person. Also test a different account and a direct download address. The file should remain inaccessible to someone without the service’s required permissions.
Manage storage and deletion
Document storage, access, backups and retention justified by the need and applicable context. Arrange removal of abandoned temporary files as well as processed documents. Notifications can point to secure storage instead of copying every attachment to multiple inboxes.
Repeat boundary tests after form changes and check historical files. Deliver allowed formats, understandable errors, a permissions matrix and an owner-assigned deletion procedure.
Primary documentation : OWASP — File Upload Cheat Sheet.
Offer file selection without dropping and explicit order
Provide a file-selection control alongside a drop area. For reordering, offer Move up, Move down or destination selection without dragging. Check focus and the order actually submitted after each change.
Distinguish selected file, completed transfer and accepted document. A finished progress bar is insufficient when the server still validates the file. Explain recovery after rejection without removing other accepted documents.
Reorder items without relying on drag and drop · Choose interface links, buttons and actions · Write and announce interface status messages
Reference documents
Content updated on October 7, 2026
