我在身份服务器中使用隐式客户端,另一方面有一个原生的Android应用程序,
我的安全问题是:
1- 应用逆向工程:如果攻击者可以访问client_Id
,redirect_uri
和/或response_type
,他将能够模仿登录请求。
2- 中间的人:那些client_id
,...是通过未加密的https URI发送到身份服务器的,为什么不将它们隐藏在Header中?
3-浏览器将重新发送URI中的令牌,如果重定向URI不是oob
或localhost
,则将其显示给中间的人,浏览器默认行为将重定向到位置,因此我们可以强制开发人员在注册客户端时使用oob,
你可以说,在浏览器发送请求之前,应用程序没有正在读取令牌并快速关闭浏览器,
我们真的可以依靠关闭浏览器的应用程序速度,这听起来很软弱吗?
哪个问题是合理的问题,哪个不是,也是如何解决合理的问题。
关于第1点:谷歌如何保护它的服务,如谷歌地图,客户报价至关重要,它必须非常安全,对!!
修改
如果我们在标题中传递client_id来加密它,我们将违反http 1.1规范和oauth2规范,但我们仍然没有做太多,因为client_id驻留在手机中,通过小型逆向工程你可以得到它
答案 0 :(得分:1)
关于第3点: 验证成功后的令牌响应将是这样的:
HTTP/1.1 302 Found
Location: http://example.com/cb#access_token=2YotnFZFEjr1zCsicMWpAA
&state=xyz&token_type=example&expires_in=3600
用户代理将重定向到location参数中提供的URL。这里不需要担心MiTM攻击,因为访问令牌包含在 URL哈希片段&散列片段不会在HTTP请求消息中发送,换句话说,散列片段不会离开客户端机器。
答案 1 :(得分:0)
2& 3.如今,您应该对网络上的大多数内容使用HTTPS。