【问题标题】:Preferred way to validate file type via http upload通过 http 上传验证文件类型的首选方式
【发布时间】:2015-11-03 15:21:50
【问题描述】:

我正在为一个 asp.net 网站创建一个简单的文件上传机制,我被困在验证部分,而不是代码,而是我应该如何检查文件类型,考虑到上传者需要只允许某些文件类型(即图像类型),我觉得通过正则表达式验证扩展名是一种验证文件的脆弱方式,考虑到我可以上传扩展名为 jpg 的 pdf 并且它不会被标记。

使用正则表达式是验证文件类型的最佳方式吗?

编辑:询问是否最好通过扩展名验证文件类型是最好的方法,而不是如何去做。

【问题讨论】:

  • 你要针对正则表达式测试什么?文件名?
  • 我在问验证文件扩展名是否实际上是验证文件类型的最佳方式,而不是如何去做。
  • 不,您在问题的任何地方都没有提到扩展名或文件名,因此我的第一条评论。无论如何,不​​,正是因为您提到的原因:上传者可以轻松上传可执行文件并将其重命名为.jpg
  • 哇,我错过了两次。我的错。我猜我是胖手指,我确实使用了 Ctrl+F...

标签: asp.net regex validation


【解决方案1】:

是否最好通过扩展名验证文件类型

没有。文件扩展名什么也没说。

你没有解释任何关于你的情况,所以我会假设最坏的情况:你正在编写一个可公开访问的图片托管网站,任何人都可以上传图片,任何人都可以查看任何人上传的图片。

浏览器会执行从 HTML <img /> 标记托管的 JavaScript 文件的漏洞利用。所以你应该打开上传的文件来检查它是否真的包含图像。

但它并不止于此。阅读http://security.stackexchange.com 上的(标题不佳的)问题Use PHP to check uploaded image file for malware? 并阅读从那里链接到的问题,以查找在构建用户可以上传文件的站点时可能遇到的其他潜在问题。如果您想保护您的服务器和您的用户,必须采取许多步骤。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-29
    • 2010-09-27
    • 2013-12-14
    • 2016-01-18
    • 2010-09-26
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    相关资源
    最近更新 更多