我有一个应用程序,用户可以上传一个文件给我们执行一些操作。唯一需要的文件类型是JSON,最初我们将上传限制为application/json
类型。
但是,我们有一个用户,当他们试图上传JSON文件时会出现错误。我们可以更新应用程序以允许application/octet-stream
类型的文件并使其正常工作,但这似乎是语义上的。
我对application/octet-stream
不太了解。在我的搜索中,我没有学到更多。似乎有些浏览器在不知道该如何处理文件时可能会将文件转换为这种类型;有时,当文件扩展名不存在时(我们已经测试了文件扩展名和扩展名,但仍然存在相同的问题),可能会引发此错误;而且,这种类型似乎允许.exe
类型的文件和其他任何文件被上传。
如果允许用户上传application/octet-stream
类型的文件,是否存在安全风险?为什么或者为什么不?
发布于 2016-10-11 21:09:52
在张贴我的问题后,它让我从不同的角度对我的问题进行了搜索。我想我的问题在这篇文章中得到了回答:
What security issues appear when users can upload their own files?
鲍勃·阿曼写道:
如果允许用户上传脚本和可执行文件,则应确保通过该表单上载的任何内容都不会作为应用程序/八位流之外的任何内容提供。在处理潜在危险的上传时,不要尝试混合内容类型。如果您要告诉用户他们必须担心自己的安全性(这实际上是您接受脚本或可执行文件时所做的事情),那么一切都应该作为应用程序/八位流来使用,这样浏览器就不会试图呈现它。您还应该设置内容处理头。如果您想要处理可执行文件,那么在管道中使用病毒扫描器可能也是明智的。例如,ClamAV是可编写脚本和开放源码的。
https://stackoverflow.com/questions/39989375
复制