【问题标题】:The right use of <identity impersonate="true"/><identity impersonate="true"/>的正确使用
【发布时间】:2013-07-29 05:39:50
【问题描述】:

在我的网站中,已登录的用户可以更改他们的头像,这个过程包括将上传的图片保存到网站根目录的文件夹中。

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

我无法控制控制面板,他说他确实授予 Images 文件夹 READWRITE 其他人的权限。

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

<identity impersonate="true"/>

现在一切似乎都运行良好。但是,我刚刚在这里做了什么?有安全隐患吗?我是否允许所有人匿名访问我的网站?

【问题讨论】:

    标签: c# asp.net permissions impersonation


    【解决方案1】:

    但是,我刚刚在这里做了什么?

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

    是否存在任何安全风险?

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

    您的方法存在的问题是,如果另一个无权访问指定文件夹的用户访问您的网站,它对他不起作用。另一方面,如果这是预期行为,那么您可能可以通过冒充用户身份来解决问题。

    我是否允许所有人匿名访问我的网站?

    不,这与身份验证无关。

    【讨论】:

    • 由于我无法访问控制面板,我不得不自己测试权限,因为联系那个人很痛苦。无论如何,我尝试访问文件夹,但它被禁止(在 impersonate=true 下),我还能测试什么以确保一切都是安全的? (我什至不知道这是否正确:()
    • 正如我在回答中已经解释的那样,您可能不应该使用模拟。
    【解决方案2】:

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

    假冒真实存在安全风险。

    如果您正在生产,我建议您阅读这篇文章 http://support.microsoft.com/default.aspx?scid=kb;en-us;329290

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多