用户是否对Temporary ASP.NET Files文件夹写入权限会造成任何安全问题?

Joe*_*ech 5 asp.net security

由于对Temporary ASP.NET Files文件夹的权限不足,我遇到程序集绑定失败.

该应用程序使用(web.config)表单身份验证与Impersonate = True和IIS Windows集成身份验证.

根据ASP.NET Identity Matrix,这意味着WindowsIdentity解析为Domain\UserName,并且根据ASP.NET必需的访问控制列表(ACL),WindowsIdentity需要对Temporary ASP.NET Files文件夹的读/写权限.

使用Fusion日志查看器,我可以确认程序集绑定失败是由于Domain\UserName(属于安全性中的"Users"组)只对该文件夹具有读取权限,而不是写入权限.

问题是:

为临时ASP.Net Files文件夹分配写权限是否有任何安全隐患?

这种服务器配置变化是常用的吗?如果没有,为什么WindowsIdentity会针对此web.config设置组合解析为Domain\UserName - 或者是否应该在此上下文中使用此组合?

注意:仅当非管理员用户是第一个访问该页面的用户时,才会出现此问题.如果由于管理员用户访问页面而已将程序集编译并存储在临时ASP.NET文件中,则后续用户不会遇到任何问题.我不希望将程序集放在GAC中.

Ste*_*ple 1

ASP.NET 需要对临时 ASP.NET 文件文件夹的写入权限,如果您只授予对该文件夹的权限,而不是更高的权限,因为它位于 c:\windows 文件夹中,那么它不应该存在安全风险。

这篇有关保护 ASP.NET 应用程序安全的 MSDN 文章建议将对临时编译目录的完全控制权授予 ASP.NET 进程标识。我引用了相关部分:

默认情况下,临时文件在以下目录中创建和编译:

%winnt%\Microsoft.NET\Framework{版本}\临时 ASP.NET 文件

您可以使用 tempDirectory 属性在每个应用程序的基础上指定位置,尽管这不会提供任何安全优势。

注意 元素上指定的 ASP.NET 进程标识需要对临时编译目录具有完全控制访问权限。