【问题标题】:Angular with asp.net mvc URL change security permissions is given to user具有 asp.net mvc URL 更改安全权限的 Angular 已授予用户
【发布时间】:2017-04-21 19:56:16
【问题描述】:

显然我继承了一个严重的安全问题。

用户可以登录并在此 URL

https://ourdomain.com/User/Index  

但问题是用户可以放入

https://ourdomain.com/User/Edit/16642     and have ACCESS 

解决这个问题的简单方法是什么?

【问题讨论】:

    标签: asp.net angularjs asp.net-mvc security


    【解决方案1】:

    这是一个有时被称为“强制浏览”的漏洞。 对您的问题的简短回答是没有简单的方法。您必须实施授权,而将其改装到现有应用程序中会很痛苦。

    首先,您需要身份验证(即用户能够安全登录)。我想这或多或少已经完成了,否则 ~/User/Index 将毫无意义。 (顺便说一句,如果站点中存在这样的漏洞,您可能也应该查看身份验证,但是如果使用了诸如表单身份验证之类的标准东西,那么这更容易正确。)

    然后你需要授权,可能在两个不同的级别。对于每个调用(即 MVC 中的控制器操作),您需要决定是否允许登录用户进行调用。在 .Net MVC 中,实现这一点的相对简单的方法是 MembershipAuthorize attribute

    然后根据功能,您可能还需要细粒度的授权。例如,如果您的应用程序存储了分配给特定用户的书籍列表,而其他用户无权访问,则应用程序需要根据登录用户 来决定是否可以满足 ~/ShowList/123 请求> id=123 的特定列表(仅仅说登录用户可以调用 ~/ShowList 是不够的,因为它取决于哪一个)。这在 Microsoft 术语中称为基于资源的授权,并在 here 进行了讨论。如果您在同一类型的主题(用户)和对象(书单)之间没有这种区别,您可能根本不需要这个。

    如果您继承的应用程序很大,实现这些都是痛苦的,但不幸的是,确实没有非常简单的捷径。你可以用不同的方式做,但任何比这少得多的工作都可能有缺陷,除非你的用例非常具体。

    另外请注意,Angular 与此没有太大关系。所有的授权都必须在服务端实现,否则没用。

    【讨论】:

      猜你喜欢
      • 2014-07-26
      • 2014-06-01
      • 1970-01-01
      • 2017-06-24
      • 2014-08-11
      • 2018-02-05
      • 1970-01-01
      • 2019-03-09
      • 2020-11-22
      相关资源
      最近更新 更多