Cookie 防篡改机制服务器
服务器能够为每一个Cookie项生成签名,因为用户篡改Cookie后没法生成对应的签名, 服务器即可以得知用户对Cookie进行了篡改。并发
1. 在服务器中配置一个鲜为人知的字符串(咱们叫它Secret),好比:x$sfz32。code 2. 当服务器须要设置Cookie时(好比authed=false),不只设置authed的值为false, 在值的后面进一步设置一个签名,最终设置的Cookie是authed=false|6hTiBl7lVpd1P。blog 3. 签名6hTiBl7lVpd1P是这样生成的:Hash('x$sfz32'+'true')。 要设置的值与Secret相加再取哈希。ip 4. 用户收到HTTP响应并发现头字段Set-Cookie: authed=false|6hTiBl7lVpd1P。字符串 5. 用户在发送HTTP请求时,篡改了authed值,设置头字段Cookie: authed=true|???。 由于用户不知道Secret,没法生成签名,只能随便填一个。get 6. 服务器收到HTTP请求,发现Cookie: authed=true|???。服务器开始进行校验: Hash('true'+'x$sfz32'),便会发现用户提供的签名不正确。table |