【问题标题】:Authorization in single page applications单页应用程序中的授权
【发布时间】:2020-07-23 12:39:21
【问题描述】:

我正在研究使用 webapi 作为后端的 SPA 的安全方法。我对安全方法感到困惑。据我了解,身份验证验证用户身份。所以提交用户名和密码并接收回一个令牌。然后授权允许用户使用该令牌访问某些方法。不知道我是否有这个权利。

我的问题是,例如允许这个特定用户使用参数AccountNumber=1 访问方法GetAccountData。此用户应该只能看到帐号1,而不是帐号2

如何防止用户使用 Fiddler 之类的程序发送相同的请求,使用他们收到的令牌,但将参数更改为 AccountNumber=2

底线是我想阻止用户访问他们不应该看到的其他帐户。

如果我解释不正确,请告诉我。

【问题讨论】:

    标签: security authentication authorization


    【解决方案1】:

    身份验证是关于说明您是谁并证明如下:我是用户“...”,这是我的密码“...”。

    授权是关于在功能级别(用户可以调用哪些功能)和数据级别(用户可以访问哪些数据)定义访问权限。

    访问控制是关于授权规则的执行。有时授权和访问控制这两个术语可以互换使用。

    现在回到你的问题。您无法阻止用户弄乱请求。您永远不应该相信传入的数据并始终验证输入。如果用户不应访问他请求的数据,您必须检查它并拒绝请求(如果用户未通过身份验证,则返回 http 状态 401,如果用户未授权,则返回 http 状态 403)。

    【讨论】:

    • 欣赏输入。所以既然你不能阻止用户弄乱请求,人们如何处理这个?一旦我收到请求,您如何检查它?
    • 您可以手动执行此操作,就像您了解用户并且知道他想要访问的 accountNumber 一样。如果您应该允许,您需要签入代码。您需要在您的数据或数据库中包含一些用户可能会或可能不会做的事情的模型,并针对该模型执行检查。
    • 所以对于来自用户的一个请求......比如“getMyData”,我实际上应该执行 2 次。 1. 检查该用户是否有权访问该帐户。那么 2. 实际获取数据?
    • 是的,您应该执行多个操作。
    • 所以这可能是偏执狂……但是如果他们也更改用户名怎么办……所以对于他们知道的员工可能有权访问更多数据。
    猜你喜欢
    • 2017-03-06
    • 2014-06-11
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2018-04-29
    • 2016-11-12
    相关资源
    最近更新 更多