如何限制仅上传图片?

时间:2018-12-05 04:09:09

标签: c# asp.net image

我已经建立了一个用于图像共享的网站。

用户上传图片(PNG或JPEG文件)

我已经在代码中检查了文件类型,因此如果它不是PNG或JPEG,则不会上传。

但是发生的是,我发现有很多.php文件上传了一些方式!

最后使我的网站被黑了:(

我如何保护我的网站,但只允许上传真实图像文件

我使用ASP.net C#

2 个答案:

答案 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>