mobile - Oauth 2如何防止移动应用程序中的重播攻击?

标签 mobile oauth replay

这个问题已经很多了,但是我还没有找到答案。我已经阅读了OAUTH 2规范和单独的安全性“注意事项”文档,但是我对某些内容仍然感到困惑。

这种情况是:移动应用程序正在访问基于REST风格的Web服务。我既是服务器资源(RESTful服务的创建者和主机),又是授权机构(我存储用户的ID和密码并验证身份)。第三方公司创建使用我的服务的移动应用程序。我正在使用OAuth 2.0验证用户的UserID和密码并颁发 token 。使用通过https进行的TLS。

带有单个消息的随机数通常用于防止重播攻击,但是据我所知,在移动应用程序中它不起作用,因为要对消息进行签名,您需要一个共享的 secret 。移动应用程序上存储的所有 secret 信息(允许您对消息进行签名)已不再是 secret 信息。因此,不能使用随机数。

因此,我们有 session token ,这些 session token 会在一段可配置的时间段后过期,并且可以使用“刷新 token ”进行刷新。

我的问题是:如果TLS被打败(例如:用户愚蠢到足以将手机连接到代理服务器并安装代理证书,然后允许代理服务器所有者读取未加密的流量),是什么导致了黑客是否使用有效的 session token (虽然它仍处于事件状态)重播请求,或更糟的是使用刷新 token 一次连续保持 session 数小时,以不断获取新的 session token ?

最佳答案

您建议的情况是安全性遭到破坏而没有安全性的情况。代理可以执行诸如在身份验证期间窃取用户密码或将访问 token 转移到另一个应用程序(本地或远程)的操作。您必须只接受这种情况作为损失。

同样,移动应用程序通常具有共享的 secret 。正如您所指出的那样, secret 会失去客户端上的某些安全性,但总比没有好。 secret 通常会在静止时进行加密,以防止其轻易被盗。当然,即使对加密技术应用了解密 key ,也可以从应用程序中窃取解密 key ,但是它提供了一定的安全性。

确保限制客户端上 secret 的访问权限。确保未为两足式身份验证配置它。应该将其保存在服务器上,并且仅在需要时保存。

关于mobile - Oauth 2如何防止移动应用程序中的重播攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22198211/

相关文章:

asp.net-mvc-4 - 在 Windows 7 IIS 上部署时,MVC 4 Mobile Razor View 未呈现

css - 响应式设计不会缩小移动 [@media queries]

mongodb - 维护 MongoDB 副本集的镜像数据库

logging - 事件源和记录/重放命令

css - 我可以使用 "freeze"仅使用 CSS(或在移动设备上看起来不错的东西)的可滚动 DIV 中的元素吗?

html - Mobile Safari (iPad) 中的背景图像渲染问题

java - 通过 Java 生成 Oauth Bearer token

c# - 具有不同身份验证 header 的 HttpClient 单个实例

oauth - Auth0/授权端点不返回 JWT

node.js - 使用 npm replay 包时未记录 Http 响应?