我已经建立了一个用于图像共享的网站。
用户上传图片(PNG或JPEG文件)
我已经在代码中检查了文件类型,因此如果它不是PNG或JPEG,则不会上传。
但是发生的是,我发现有很多.php文件上传了一些方式!
最后使我的网站被黑了:(
我如何保护我的网站,但只允许上传真实图像文件
我使用ASP.net C#
答案 0 :(得分:1)
您可以使用“ accept”属性来限制类型。它将验证文件的mime类型。
<asp:FileUpload ID="FileUploadFileType" runat="server" CssClass="form-control" accept=".png,.jpg,.jpeg,.gif" />
不幸的是,这并不理想,您还需要某种后端解决方案。由于您仍然可以将rootkit作为.jpg文件上传, 也许另外检查文件头将是一个好主意。完美的是,您需要一个适当的rootkit检测解决方案,然后才能在服务器上接受文件。
答案 1 :(得分:1)
以下代码将为您服务。无论系统接受什么扩展名,您都可以将其添加到接受
asp:FileUpload ID="fileUploader" runat="server" accept=".png,.jpg,.jpeg,.gif" />
我认为这很好,除非您不打算进行这样的验证,
<asp:FileUpload ID="fuImportImage" runat="server" />
<asp:RegularExpressionValidator ID="regexValidator" runat="server"
ControlToValidate="fuImportImage"
ErrorMessage="Only JPEG images are allowed"
ValidationExpression="(.*\.([Jj][Pp][Gg])|.*\.([Jj][Pp][Ee][Gg])$)">
</asp:RegularExpressionValidator>