【发布时间】: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