tornado里面有关几个cookie的处理,在web.py文件里。
get_cookie, set_cookie普通的设置cookie, clear_cookie, clear_all_cookies是删除cookie。
还有两个是 get_secure_cookie, set_secure_cookie,这两个的功能是能够防止用户的cookie被伪造。
先看看函数处理方法。
看 set_secure_cookie,里边与set_cookie的区别就是value经过 create_signed_value的处理。
create_signed_value,得到当前时间,将要存的value base64编码,通过_cookie_signature将 加上name,这三个值加密生成签名。然后将签名,value的base64编码,时间戳用|连接,作为cookie的值。
_cookie_signature,就是根据settings里边的 保密的密钥生成签名返回。
get_secure_cookie,用|分割cookie的value,通过name,原value的base64的编码,时间戳得到签名,验证签名是否正确,正确返回,还多了一个过期时间的判断
如果别人想伪造用户的cookie,必须要知道密钥,才能生成正确的签名,不然通过 get_secure_cookie获取value的时候,不会通过验证,然后就不会返回伪造的cookie值。