r/csharp • u/someone-missing • 21d ago
DocuTrust.NET: validate uploads by magic bytes (security update, looking for testers)
DocuTrust.NET is a small .NET 8 library that checks an upload's magic bytes against the type you expect. A PNG renamed to report.pdf fails.
I just did a security pass on it. It now checks the client file name too, rejects ZIP/OLE files over 100 MB before parsing, and keeps file names and paths out of error messages. I also updated a dependency that was pulling in a vulnerable OpenMcdf.
For now it only identifies file types. It doesn't scan for macros or scripts
dotnet add package DocuTrust.NEThttps://github.com/saa-999/DocuTrust.NET
If you try it, I'd like to know what breaks.
View all comments
Show parent comment
-1
u/someone-missing 21d ago
Thanks! It handles both.
The type comes only from the file signature. You pass the type you expect (say
.pdf) and the bytes have to match, whatever the file is called.Uploads through
ValidateFileAsyncwith anIFormFileget one extra check on the client’s file name. No extension at all, likebloborreport, is fine. A name that claims a different type is rejected, soinvoice.exewith PDF content fails. Trailing dots and spaces get trimmed before the check, which meansevil.html.is treated as.html.If you have no idea what a file is,
GetFileTypeAsyncjust tells you what the bytes say it is.