如何防止OAuth身份验证漏洞
阻止OAuth身份验证漏洞,OAuth提供者和客户端应用程序都必须实现钥匙输入的强大验证,尤其是redirect_uri.
范围。在OAuth规范中,在OAuth规范中有很少的内置保护,因此开发人员自己可以使OAuth流动尽可能安全。
值得注意的是,漏洞可以在客户端应用程序和OAuth服务本身的一侧出现。即使您自己的实现是摇滚固体,您仍然最终依赖于另一端的应用同样强大。
对于OAuth服务提供商
- 要求客户端应用程序注册有效的白名单
redirect_uris.
。尽可能使用严格的字节字节比较,以在任何传入请求中验证URI。只允许完整和完全匹配而不是使用模式匹配。这可以防止攻击者访问白名单中的其他页面。 - 强制使用
状态
范围。它的价值也应该通过包括一些不合情的会话特定数据,例如包含会话cookie的哈希值,其值绑定到用户的会话。这有助于保护用户免受CSRF类似的攻击。它还使攻击者更难以使用任何被盗授权代码。 - 在资源服务器上,确保验证访问令牌是否已发出
client_id.
这是提出要求。您还应该检查所要求的范围,以确保这与令牌最初授予的范围匹配。
对于OAuth客户端应用程序
- 确保您完全了解OAuth在实现之前如何工作的详细信息。许多漏洞是由于简单地缺乏对每个阶段发生的事情以及可能被剥削的情况如何发生的情况造成的。
- 使用
状态
参数即使它不是强制性的。 - 寄一个
redirect_uri.
参数不仅要到/授权
终点,还有/令牌
端点。 - 在开发移动或本机桌面OAuth客户端应用程序时,通常无法保留
client_secret.
私人的。在这些情况下,PKCE.
(RFC 7636.
)机制可用于提供额外的防止访问代码拦截或泄漏保护。 - 如果你使用Openid.连接
id_token.
,请确保根据JSON Web签名,JSON Web加密和OpenID规范正确验证。beplay体育能用吗 - 小心授权代码 - 它们可能通过泄漏
推荐
加载外部图像,脚本或CSS内容时标题。在动态生成的JavaScript文件中不包含它们也很重要,因为它们可以通过外部域通过标签。