當(dāng)我們使用cookie時(shí),我們可以用cookie value | hash_value of the cookie來(lái)設(shè)置cookie值.
當(dāng)client不知道我們的hash 算法時(shí), client 可以更改cookie value 但是卻不能正確的得到寫的hash值。
到了server端,我們就可以使用hash 函數(shù)再計(jì)算一次 cookie value, 看是否等于 client傳過(guò)來(lái)的hash值,以此來(lái)判斷cookie value是否被更改過(guò)了。
import hashlib
def hash_str(s):
return hashlib.sha256("our secret!"+s).hexdigest()
# or
def hash_str(s):
return hmac.new("secret", "ziho").hexdigest()
def make_secure_val(s):
return "%s | %s" % (s, hash_str(s))
def check_secure_val(h):
val = h.split('|')[0]
if h == make_secure_val(val):
return val
print(check_secure_val("zihowe | 016d473857f1029884ec80ede8ae486f33d2fdad9411d63cd2aab11097ee997c")
import hmac
hmac.new("secret", "ziho").hexdigest()
hashlib.md5("secret" + "ziho").hexdigest()
Note:
Secure: sha256 > sha1 > md5