【问题标题】:ASP.NET securityASP.NET 安全性
【发布时间】:2010-01-04 22:52:33
【问题描述】:

我目前正在将我们公司的数据库应用程序从 VB 转换为 ASP.NET。这几乎是我的第一个 ASP.NET 应用程序,我有一个关于安全性的问题。我希望某些用户能够添加或编辑数据,而其他用户只能查看和打印报告。现在,据我了解,在 ASP.NET 中,我可以使用基于表单的身份验证来限制对某些页面的访问,但我真正想做的是使用同一个网页,不仅可以查看数据,还可以编辑它(使用网格视图)。我不知道如何使用基于表单的身份验证来做到这一点,而无需在不同文件夹中拥有单独(但相似)的网页,每个网页都有自己的安全级别。

我想我总是可以使用同一个网页,然后检查用户角色以确定我是否应该启用“编辑”按钮。这是一种好的(和常见的)编程习惯吗?

谢谢

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    检查角色成员资格是一种公认​​的方法。但是,不要只检查按钮何时显示,还要检查它触发的事件的响应过程,以防有人试图绕过事件验证。

    【讨论】:

      【解决方案2】:

      User.IsInRole() 是您所需要的。如前所述,在每一步都进行检查 - 用户可以伪造任何类型的 HTTP 响应,因此每个服务器端方法都需要安全检查。

      不要只检查是否启用...您还必须在单击编辑按钮时检查它。

      【讨论】:

        【解决方案3】:

        我会实现我自己的自定义 RoleProvider (MSDN Article)。然后有不同的角色来描述你的应用程序的不同访问级别,就像 blowdart 所说的检查按钮、面板何时显示用户是否有权访问该资源。

        如果您使用数据库,我可以建议您在测试页面时使用监控 SQL Profiler(或类似工具)吗?您会惊讶于 db 为看似微不足道的页面加载而获得的调用量。

        另外,请检查 ASP.NET 中的安全调整。值得一看。

        干杯。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-01-19
          • 2018-03-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-12
          • 2016-07-30
          相关资源
          最近更新 更多