我正在从一个应用程序到另一个应用程序进行 API 调用。md5
我通过传递一个ed 共享密钥 + 时间戳来处理授权...
$token = md5( $secret . time() );
然后在 API 端点,我像这样检查请求的真实性......
if ( md5($shared_secret . time() ) == $token )
...do stuff
这行得通。但它并不像我想要的那样可靠。我怀疑原因是由于网络(或我的慢速本地主机服务器)中的延迟导致时间戳不匹配一秒左右。
我通过删除时间戳的最后一位数字以一种懒惰的方式解决了这个问题,从而为我的 slowpoke 服务器创建了一个长达 10 秒的窗口来进行调用。但是,我对此并不满意,因为如果电话恰好在第 9 秒结束时落下,我将再次遇到同样的问题(在 #######49 发送!= 在 ## 收到######50)。
必须有更好的方法来做到这一点。它是什么?