ash*_*ina 6 security authentication api rest
我正在实现REST API身份验证系统.
我基本上使用本网站解释的方法:
http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/
基本上它使用请求主体来创建哈希,将其与实际请求一起发送到服务器,服务器重新创建并比较它,以及什么不...
我不打算解释细节.重要的是我正在使用时间戳来防止"重放攻击".
从网站引用,它解释说:
将当前服务器的时间戳与客户端发送的时间戳进行比较.确保两个时间戳之间的差异在可接受的时间限制内(可能是5-15分钟),以阻止重播攻击.
我现在面临的问题是,如果客户端的时钟设置被修改,它可能会导致意外的API身份验证失败,因为时间戳在客户端和服务器之间不同.
有没有办法解决这个问题?我是否必须放弃使用时间戳?
如果有人能帮助我解决这个时间戳问题,或者我可以阻止重放攻击的任何其他方式,我将非常感激.
注意:我知道向客户端发布一个nonce是防止"重放攻击"的一种很好的方法,但我想把它作为我的最后手段,因为创建一个nonce-issuing-API的实现成本和管理的后端nonce太大了.
当将服务器的时间戳与客户端发送的时间戳进行比较时,它不一定是客户端时间戳,而是服务器先前发送给客户端的时间戳。您永远不能依赖客户端自己的时间戳,因为它可能是任何东西,也可能位于世界的另一端。
当客户端第一次连接到服务器时,服务器可以回复自己的时间戳并存储在客户端上,下次客户端必须发送最后收到的时间戳。
| 归档时间: |
|
| 查看次数: |
2015 次 |
| 最近记录: |