我想要一个文件类型白名单,用户有权上传到我的 IIS 服务器(我使用的是 IIS v7.5)。
我有什么选择?例如,为了将控制器中特定操作的文件大小限制为 5MB,我将此部分添加到我的 webconfig 中:
<location path="home/fileupload">
<system.web>
<!-- maxRequestLength is in kilobytes (KB) -->
<httpRuntime maxRequestLength="5120" /> <!-- 5MB -->
</system.web>
<system.webServer>
<security>
<requestFiltering>
<!-- maxAllowedContentLength is in bytes -->
<requestLimits maxAllowedContentLength="5242880"/> <!-- 5MB -->
</requestFiltering>
</security>
</system.webServer>
</location>
webconfig 中是否有选项可以设置允许的文件类型白名单?或者唯一的选择是在文件完全上传时验证代码中的文件类型?推荐的技术是什么?我如何确定 .docx、.pdf、.jpg 等文件确实如此?
由于您需要服务器端,因此您可以使用文件 mime 类型。
THIS https://stackoverflow.com/questions/58510/using-net-how-can-you-find-the-mime-type-of-a-file-based-on-the-file-signature帖子展示了如何根据文件内容(而不是扩展名)确定 MIME 类型。
如果您确实想将输入限制为特定文件扩展名,您可以简单地根据您想要接受的内容检查输入名称。如果通过了,您可以对我链接的帖子中的库进行外部参照,以确保用户不仅仅更改了您的文件扩展名。
这样做可以很好地确定该文件是您想要接受的文件!
编辑:根据迄今为止的评论......
根据您所说的,您正在寻找的这种方法应该非常适合您。如果您只是想将其限制为您评论中列出的文件类型,我的建议是...对文件扩展名进行简单检查。如果有效,则将文件传递给urlmon.dll
链接中列出。确保它不会作为无效类型返回......又名可执行文件/java/zip/等。如果它不是无效类型,那么您将非常确定它是一个安全文件!
最后,仔细阅读该帖子的评论,看起来像是urlmon.dll
可能隐式支持您想要的所有文件类型,这将消除检查它不是可执行文件或类似性质的文件的需要,但您需要确认 doc/docx/xsl/xslx 确实返回有效的 mime 类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)