[工具使用] 如何防御OAuth认证漏洞

261 1
HK.JH 2022-2-13 23:26:20 来自手机 | 显示全部楼层 |阅读模式
防御OAuth认证漏洞,OAuth服务提供者和client对用户输入的校验必不可少,特别是redirect_uri参数。在OAuth规范中几乎没有内置防护,因此,OAuth的安全只能取决于开发人员自己。

需要注意的是,漏洞可能同时出现在client和OAuth服务提供者。即使这一端的实现非常安全,但最终仍然依赖于另一端的应用也同样安全。

1. OAuth服务提供者
要求client注册合法的redirect_uri白名单,尽可能使用严格的逐字节比对来验证任何传入请求中的URI。只允许完全和精确的匹配,而不是使用模式匹配。这可以防止攻击者访问白名单域上的其他页面。

强制使用state参数。它的值还应该通过包含一些不可猜测的、用于会话的数据(比如包含会话cookie的hash)来绑定到用户的会话。帮助用户防御CSRF类似攻击。它还使攻击者更难使用和窃取授权码。

在资源服务器上,确保将access token发送给发出请求的那个client_id。您还应该检查请求的scope,以确保它与最初授予token的scope相匹配。

2. clienty应用
在实现OAuth之前,确保你完全理解了它的工作原理。许多漏洞都是由于对每个阶段到底发生了什么、以及如何被攻击者利用的,没有深入理解而造成的。

即使没有强制要求也使用state参数。

不仅要向/authorization端点发送redirect_uri参数,还要向/token端点发送。

在开发移动或本机桌面OAuth客户端应用程序时,通常client_secret不可能不公开。在这种情况下,PKCE (RFC7638)机制可用于提供额外的保护,防止access token被截取或泄露。

如果您使用OpenID Connect id_token,请确保根据JSON Web签名、JSON Web加密和OpenID规范正确验证它。

在加载外部图像、脚本或CSS内容时,授权码可能会通过Referer头泄露。同样重要的是,不要将它们包含在动态生成的JavaScript文件中,因为它们可能通过<script>标记从外部域执行。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行