我需要有关文件上传的帮助。在我的一个项目中,客户希望允许文件上传而不限制文件类型。但恐怕那时用户可以上传.php,.aspx,.dll,.so等可执行文件,然后他们可以轻松地进行“远程代码执行”或“脚本攻击”。
如何解决这个问题?
我需要有关文件上传的帮助。在我的一个项目中,客户希望允许文件上传而不限制文件类型。但恐怕那时用户可以上传.php,.aspx,.dll,.so等可执行文件,然后他们可以轻松地进行“远程代码执行”或“脚本攻击”。
如何解决这个问题?
此类问题的最常见解决方案是确保 Web 服务器无法访问存储的文件。
一种简单的方法是将文件存储在数据库中,并且从不将其保存到磁盘上。不过,您需要注意不要创建某种 XSS:不允许直接链接文件,或者最好是下载文件。如果您需要通过 Web 界面提供该文件,请使用“附件”内容处置标头以确保浏览器不会尝试解释该文件。
使用包含正确 URL 路由的健全框架。Web 服务器不是根据 URL 将请求定向到可执行文件,而是将所有请求重定向到框架的入口点并让它处理请求,通常基于到控制器映射的路由。
这意味着任何上传的文件都是安全的,因为它不应该被执行。
将其存储在一个特殊的数据库或斯蒂芬提到的任何 nonexc 环境中。如果只有授权人员必须上传文件,那么您可以应用这些限制并添加验证码以避免机器人。