多年来,我一直有一个疑问,并且每当这个问题出现时都会进行研究,但从未找到明确的答案。不知何故,万能的互联网、MSDN和社区论坛对此要么保持沉默,要么含糊其辞。在成千上万的与开发相关的不确定性中,这是唯一难以捉摸的一个。
言归正传:为了让用户上传和管理用于他们的博客文章的图像(和其他文件),在共享托管环境中,我可以考虑使用SQL Server二进制数据类型(性能影响)或文件系统。要使用后者,需要为IIS_IUSRS角色设置必要权限,包括创建/写入、读取和删除存储目录。我的问题是 - 如果我这样做,会有什么安全隐患?是否可能有人绕过ASP.NET请求管道并操纵文件夹内的文件,而不用向相应的ASP.NET处理程序发出请求(该处理程序检查权限、验证上传等)?
我开发了多个允许文件上传的系统,这一直困扰着我。现在,希望有人能放心地解答我的疑问,最好是解释背后的原理。
更新:
在查看最新答案后,另一种表述问题的方式是:
是否有任何可能让客户端绕过请求管道,并在允许的目录中创建/删除文件(假设该人知道目录结构)?还是只有处理请求的代码可以这样做?任何潜在的漏洞?
言归正传:为了让用户上传和管理用于他们的博客文章的图像(和其他文件),在共享托管环境中,我可以考虑使用SQL Server二进制数据类型(性能影响)或文件系统。要使用后者,需要为IIS_IUSRS角色设置必要权限,包括创建/写入、读取和删除存储目录。我的问题是 - 如果我这样做,会有什么安全隐患?是否可能有人绕过ASP.NET请求管道并操纵文件夹内的文件,而不用向相应的ASP.NET处理程序发出请求(该处理程序检查权限、验证上传等)?
我开发了多个允许文件上传的系统,这一直困扰着我。现在,希望有人能放心地解答我的疑问,最好是解释背后的原理。
更新:
在查看最新答案后,另一种表述问题的方式是:
是否有任何可能让客户端绕过请求管道,并在允许的目录中创建/删除文件(假设该人知道目录结构)?还是只有处理请求的代码可以这样做?任何潜在的漏洞?