【问题标题】:Is URL Authorization enough secure in ASP.NET?ASP.NET 中的 URL 授权是否足够安全?
【发布时间】:2011-06-11 14:21:00
【问题描述】:

我根据一些角色和使用 URL 授权将我的页面分类在不同的文件夹中,例如,我在 web.config 中使用以下代码来限制对这些管理内容的访问:

<configuration>
  <system.web>
    <authorization>
      <allow roles="Admin" />
      <allow roles="SuperAdmin" />
      <deny roles="Member" />
      <deny users="?"/>
    </authorization>
  </system.web>
</configuration>

我的问题是:这足够安全吗? 或者我需要做一些其他的事情,比如:在每个用户想要做管理工作的事件中,我应该检查他们是否处于适当的角色?

编辑: 我使用“Forms Authentication Provider”和“ASP.NET Membership Provider”来验证用户和会员资格,据我所知它是安全的

【问题讨论】:

  • 是否足够安全是一个非常相对的问题。我不是 asp.net 程序员,但以前曾在安全方面工作过,我很确定一些安全专家会在你的应用程序中找到一个整体。首先,您的身份验证框架是什么。 (理想情况下应该作为过滤器实现,使用一些技术,如 LDAP 绑定)。用户角色是否作为身份验证机制的一部分填充?
  • 如果你有一个不错的身份验证框架(如果用户名和密码身份验证,那么你应该担心 ssl 等以避免中间人攻击)并且角色不能被客户端请求注入,你应该没事。 (当然如果这是一个商业应用,你需要实现类似 Oauth 的东西)
  • @Doc: 我用户默认的 ASP.NET 表单身份验证提供程序和 ASP.NET 成员资格提供程序
  • 您应该没问题。(根据您提供的信息。)除非您需要细粒度的控制,否则您在代码中不添加任何授权逻辑的想法非常好。
  • 我们需要区分身份验证和授权。对每个页面请求进行一次身份验证,并检查用户是否真的是她假装的那个。授权检查是否允许(经过身份验证的)用户采取所请求的信息/操作。对每个信息/操作都进行了授权,因此在页面生命周期中可能会发生多次。虽然身份验证几乎是开箱即用的,但您必须单独决定在何时何地使用授权。

标签: asp.net security url authorization


【解决方案1】:

这只是验证,没有用户收到任何未经授权的页面。由于您在业务层中做了很多业务工作,因此您还想检查那里的自动化。

大多数情况下,您也无法避免在页面内多次检查,因为页面通常会提供不同的内容,具体取决于低权限用户还是高权限用户请求它们。

一般而言,您必须自行决定要提供的每条信息 - 是否可以?如果它不是一般的公共信息:想想,你怎么能有效地限制它?基于 ASP.NET 成员资格类的授权方案是这样做的良好基础。

【讨论】:

    猜你喜欢
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    相关资源
    最近更新 更多