我在Go中写了一个安静的api。我想验证每个请求。为此,服务器和客户端共享一个秘密。
要向/foo/bar/
验证GET请求,客户端会将带有时间戳的nonce参数添加到网址/foo/bar/?nonce=13899932199128265
,然后将带有密码的数据的hmac添加到网址。它提供了类似/foo/bar/?nonce=13899932199128265&hmac=hd7nd7s9s702j
为了验证传入请求的有效性,服务器验证在时间戳之后没有来自客户端的请求,并且hmac是valide。
我认为这是验证请求的常用方法。例如,mtgox使用类似的过程。
我遇到的问题是我的客户可能会同时需要一个网址列表[url1,... urln]。在这种情况下,没有任何保证客户端发送的第一个请求将首先到达服务器。实际上,请求的任何排列都将导致403错误。
我的第一个问题很简单:这是一个真正的问题吗?请求订单在运输过程中是否会发生变化?
第二,完全是客户端验证没有发生403错误吗?
有更好的方法吗?
非常感谢!