我正在使用Carrierwave和Rails 4实现pdf上传。客户问我恶意内容,例如如果有人试图上传被屏蔽为pdf的恶意文件。我将限制前端的文件类型为'application / pdf'。假设上传的文件有.pdf扩展名吗?还有什么我需要担心的吗?
答案 0 :(得分:3)
文件上传通常是一个安全问题,因为有很多方法可以解决它。关于将恶意文件屏蔽为PDF的问题,检查内容类型(application/pdf
)是好的,但还不够,因为它由客户端控制并且可以修改。
.pdf
扩展程序,但请确保您不接受virus.pdf.exe
等文件。但这只是为了限制文件类型。接受文件上传时,您还需要注意许多其他问题。
这不是一个完整的清单。有关详细信息,请查看OWASP的Unrestricted File Upload漏洞。
答案 1 :(得分:1)
另外对@StefanOS的好答案,PDF文件需要以字符串开头:
%PDF-[VERSION]
通常,至少通常,前几个字节(或更多)表示文件类型 - 特别是对于可执行文件(即,Windows可执行文件,称为PE文件,应该启动 - 如果内存服务 - 使用“MZ
“)。
对于上传的PDF文件,打开上传的文件并读取前5个字节应始终产生%PDF-
。
这可能是一个足够好的验证。对于大多数用例。