【问题标题】:Is oauth2 insecure?oauth2 不安全吗?
【发布时间】:2012-12-13 18:40:39
【问题描述】:

我正在为我创建的 API 实施 oauth2 解决方案,我正在努力应对潜在的不安全感(或者至少是我的理解)。

仅生成单个令牌并将其用作端点请求的身份验证凭据是否正确。是什么阻止了潜在的暴力攻击,攻击者只是将令牌提交给 API,希望令牌有效并被使用?

我可能误解了一些东西,但我无法理解我的生活是什么。

【问题讨论】:

  • 每个系统在某种程度上都是不安全的。但是你不应该担心“过早的安全化”,可以这么说。
  • 所以只有在您实施了解决方案并被黑客入侵后才担心它?

标签: oauth-2.0 oauth-provider


【解决方案1】:

当然,令牌应该是难以想象的。例如,它们不应该是简单的连续整数。令牌长度也没有限制。基本上有两种选择:

1) 构建一个使用您自己的密钥加密的长令牌(注意:它不一定必须长,但它会因为加密技术会隐式地使其长)。您可以在返回时检查令牌是否真的是您的,因为您是唯一可以加密和解密这些令牌的人。

2) 构建也存储在您的数据库中的令牌,并且相当难以创建,因此您将检查令牌是否存在于您的数据库中。

您也可以混合使用这两种方法。您还应该为令牌添加一些过期时间(在第一种情况下嵌入其中,或者在第二种情况下将令牌放在数据库中)。

【讨论】:

  • 您所推荐的内容并不能防止暴力攻击。加密与否,令牌只是一个字符和数字序列。
【解决方案2】:

OAuth 2.0 中最容易受到暴力攻击的授权类型之一是资源所有者密码凭据类型。在这种情况下,黑客可以访问客户端凭据(clientId 和密码),他/她只需要资源所有者(用户)凭据(用户名和密码)。 Java - Spring Security here 中描述了一个身份验证实现模型,可以避免这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-29
    • 2017-08-06
    • 2018-09-11
    • 2015-04-17
    • 2020-07-02
    • 2014-07-25
    • 2012-06-15
    • 2019-04-27
    相关资源
    最近更新 更多