5.3.1 令牌(token)
token是用于匹配响应与请求的。token的值有0~8字节(注意,每个信息都携带token,即使其长度为零)。每个请求都携带由客户端生成的token,服务端在响应时必须复制(不能修改)这个token。
token用作client-local标示,用于区分并发请求(参见5.3节),也称为“request ID”。
客户端生成token时需要注意,当前使用的token对给定的源端和目的端应该都是独一无二的。(注意客户端在生成token时,如果要向不同的端(比如源端口号不同)中发送请求,可以使用同样的token)。当只向目的端产生一个token,或者向每个目的端发送的请求都是顺序的,且都是附带响应,token为空也是可行的。有多种策略实现。
如果客户端不使用传输层安全(TLS,见第9章)发送请求,就需要使用复杂的,随机的token来防止欺诈响应(见11.4节),起到保护功能,这也是token允许使用最多8个字节的原因。token中随机组件的实际长度取决于客户端的安全需求和欺诈响应造成的威胁程度。接入到互联网的客户端至少应该使用32位随机码,记住,没有直接连接互联网也不一定能有效防范欺诈。注意,Message ID几乎没有添加保护,因为它通常是顺序分配的,因此可能被猜测到,并通过欺诈响应绕过。客户端想要优化token长度,可能会向进一步检测正在进行的攻击等级(例如计算接收的token不匹配的消息个数)。[RFC4086]讨论对安全的随机性要求。
端接收一个不是它生成的token,必须把这个token当做不透明的,不能假设它的内容和结构。
最后更新于
这有帮助吗?