正确使用<identity impersonate =“true”> </identity>

时间:2013-07-29 12:22:43

标签: c# asp.net permissions impersonation

在我的网站中,已登录的用户可以更改其个人资料照片,此过程包括将上传的图像保存到网站根目录中的文件夹中。

当我测试它时,我收到一个错误,我应该使用权限授予对此特定文件夹的访问权限。

我无法控制控制面板,表示他确实授予了图像文件夹 READ WRITE 其他的权限。

再次测试后,再次出现同样的错误,所以我编辑了 web.config 并包含:

<identity impersonate="true"/>

现在一切似乎都很完美。但是,我刚才在这做什么?有安全隐患吗?我是否允许每个人匿名访问我的网站?

2 个答案:

答案 0 :(得分:11)

  

但是,我刚才在这做什么?

您现在以客户端用户的身份运行您的网站。

  

有安全隐患吗?

这取决于此帐户在服务器上拥有的权限。通常,使用具有许多权限的帐户运行网站是不好的做法。理想情况下,您应将网站配置为在明确授予所需文件夹权限的帐户下运行。

您的方法存在的问题是,如果另一个无法访问指定文件夹的用户访问您的网站,则无法为他工作。另一方面,如果这是预期的行为,那么冒充用户身份可能会很好。

  

我是否允许每个人匿名访问我的网站?

不,这与身份验证无关。

答案 1 :(得分:3)

您所做的工作授予用户在登录用户下工作的权利。

使冒充行为存在安全风险。

如果您正在制作,我建议您阅读本文 http://support.microsoft.com/default.aspx?scid=kb;en-us;329290

“在web.config中使用模拟允许您覆盖为应用程序运行的应用程序池配置的任何标识 - 它只是一种控制身份的更精细的方法(在应用程序级别与ApplicationPool级别) ,所以你可以在同一个AppPool上运行两个应用程序,但其中一个使用模拟来使用另一个身份。“ 礼貌:App pool identity versus impersonation identity?