【问题标题】:Control Level Security in ASP.Net for server side and client side controlsASP.Net 中用于服务器端和客户端控件的控制级别安全性
【发布时间】:2018-06-14 05:42:36
【问题描述】:

我在 ASP.Net 中有一个软件应用程序,我有不同的按钮和链接标签,每个按钮都有类,例如添加按钮有 btnAdd 作为它们的类,并且一些标签使用类似的类。 如果我想要控制级别的安全性,最好的方法是什么,例如不应允许 ID = 2 的用户单击某些 ABC 页面的 AddNew 按钮。

我的解决方案: 我有几个解决方案,例如将类的名称存储在一个表中并将该表与 Pages Table 链接并将数据带入隐藏文本字段,然后在页面加载时,我们将检查是否允许此控件。就像允许 btnAdd 可见而 btnSearch 不可见。

请查找随附的图片以进行进一步说明。

假设我们在某种格式的隐藏字段中拥有权限。但这会是这样做的正确方法吗?请提出一些更好的解决方案。

【问题讨论】:

    标签: asp.net .net security asp.net-mvc-4 websecurity


    【解决方案1】:

    使用 Razor 生成按钮

    您可以构建 Razor 视图以合并包含用户权限的视图模型。然后,您可以根据用户是否有权执行该操作,将每个按钮添加到页面。

    假设您的模型(我们将其称为Users)包含一个权限集,您可以通过Users.UserPermissions 访问该权限集。您的 UserPermissions 属性可能具有 CanAddCanSearch 布尔值。您将使用数据库中有关相关用户的数据填充此模型,然后像这样呈现页面:

    <div class="container">
        @{
            if (Model.UserPermissions.CanAdd)
            {
                <button class="add">Add</button>
            }
    
            if (Model.UserPermissions.CanSearch)
            {
                <button class="search">Search</button>
            }
        }
    </div>
    

    然后在服务器端检查您的权限

    这意味着只有在用户有权执行该操作时,该按钮才会添加到界面中。

    [HttpPost]
    public ActionResult Index(UserViewModel model)
    {
        var user = User.GetByEmail(userEmail);
    
        if (user.CanAdd)
        {
            myClass.Add(model.ThingsToAdd);
        }
    
        if (user.CanSearch)
        {
            myClass.Search(model.ThingsToSearchFor);
        }
    
        return View()
    }
    

    当用户提交表单时,程序还会检查用户在服务器上的权限,以确保请求的有效性。即使攻击者设法找到一种偷偷摸摸的方法来执行他们不被允许执行的功能,程序仍然可以通过检查返回的数据并验证用户是否真的被允许执行该功能来限制攻击者执行所述操作.

    这相当于试图从银行取款 - 出纳员应该先检查以确保您在银行里有一些钱,然后再给您现金。

    你不应该做的事情

    绝对不要依赖从客户端返回的隐藏字段或对象来确定托管变量结果。您应该始终假设从客户端发送的数据不安全或被篡改。运行您的检查,清理您的输入,并尝试验证客户端发送给您的所有内容都是真实的。

    应该始终在服务器端检查诸如执行操作的权限之类的事情,而不是其他任何事情。

    【讨论】:

      猜你喜欢
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      • 2014-08-27
      • 2012-11-04
      • 2016-03-20
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多