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

Posted

技术标签:

【中文标题】用户对 Temporary ASP.NET Files 文件夹的写入权限是不是会造成任何安全问题?【英文标题】:Does user write permissions to the Temporary ASP.NET Files folder pose any security problems?用户对 Temporary ASP.NET Files 文件夹的写入权限是否会造成任何安全问题? 【发布时间】:2010-11-08 22:40:48 【问题描述】:

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

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

根据ASP.NET Identity Matrix,这意味着 WindowsIdentity 解析为 Domain\UserName,根据ASP.NET Required Access Control Lists (ACLs),WindowsIdentity 需要对 Temporary ASP.NET Files 文件夹的读/写权限。

使用 Fusion 日志查看器,我可以确认程序集绑定失败是由于 Domain\UserName(在安全中属于“用户”组)只有对该文件夹的读取权限,但没有写入权限。

问题是:

将写入权限分配给 Temporary ASP.Net Files 文件夹是否存在任何安全隐患?

这样的服务器配置更改常用吗?如果不是,为什么 WindowsIdentity 会为这种 web.config 设置组合解析为 Domain\UserName - 或者在这种情况下不应该使用这种组合?

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

【问题讨论】:

【参考方案1】:

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

MSDN article about securing ASP.NET applications 建议将临时编译目录的完全控制权授予 ASP.NET 进程标识。我已经引用了相关部分:

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

%winnt%\Microsoft.NET\Frameworkversion\Temporary ASP.NET 文件

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

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

【讨论】:

(您需要将“msdn”添加到链接的前面。)是的,但在这种情况下,web.config 设置意味着 DOMAIN\User(配置的模拟)需要写入权限并且问题具体是关于这可能产生的安全影响。 ASP.NET 进程未作为此程序集绑定的一部分。

以上是关于用户对 Temporary ASP.NET Files 文件夹的写入权限是不是会造成任何安全问题?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET - 当前身份 (Machine\ASPNET) 没有对 'c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET

asp.net网站报错Temporary ASP.NET没有读写权限怎么办?

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files这个文件找不到

win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:WindowsMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NE

备忘录——IIS程序修改不生效Temporary ASP.NET

aspnet_compiler 忽略目标目录并将 dll 留在 Temporary ASP.NET Files 目录中