由于对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(属于安全性中的“Users”组)只对该文件夹具有读取权限,而不是写入权限。
问题是:
为Temporary ASP.Net Files文件夹分配写权限是否有任何安全隐患?
这种服务器配置是否经常使用?如果没有,为什么WindowsIdentity会为这个web.config设置组合解析为Domain \ UserName - 或者是否应该在此上下文中使用此组合?
注意:仅当非管理员用户是第一个点击该页面时才会出现此问题。如果由于管理员用户访问页面而已将程序集编译并存储在临时ASP.NET文件中,则后续用户不会遇到任何问题。我不希望将程序集放在GAC中。
答案 0 :(得分:1)
ASP.NET要求对Temporary ASP.NET文件文件夹具有写入权限,如果您只授予该文件夹的权限而不是更高级别,则不应该存在安全风险,因为它位于c:\ windows文件夹中。
此MSDN article about securing ASP.NET applications建议授予对ASP.NET进程标识的临时编译目录的完全控制权。我引用了相关章节:
默认情况下,临时文件在以下目录中创建和编译:
%winnt%\ Microsoft.NET \ Framework {version} \ Temporary ASP.NET Files
您可以使用tempDirectory属性在每个应用程序的基础上指定位置,但这不会带来任何安全优势。
注意元素上指定的ASP.NET进程标识需要临时编译目录的完全控制访问权限。