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值。