Skip to main content
 首页 » 编程设计

python之旧的 python 散列从左到右完成——为什么不好

2025年05月04日11zfyouxi

我正在努力学习如何抵御对网站的安全攻击。下面的链接显示了一个很好的教程,但我对一个声明感到困惑:

在http://google-gruyere.appspot.com/part3#3__client_state_manipulation ,在“Cookie 操作”下,Gruyere 说 Python 的散列是不安全的,因为它是从左到右散列的。

Gruyere 应用程序正在使用它来加密数据:

# global cookie_secret; only use positive hash values 
h_data = str(hash(cookie_secret + c_data) & 0x7FFFFFF) 

c_data 是用户名; cookie_secret 是一个静态字符串(默认情况下只是 '')

我知道在更安全的散列函数中,一次更改会生成一个全新的结果,但我不明白为什么这不安全,因为不同的 c_data 会生成完全不同的散列!

编辑:如何打败这样的哈希?

请您参考如下方法:

评论可能试图说明的是,对于大多数哈希函数,如果给定HASH(m),那么很容易计算HASH(m . x),对于任何 x(其中 . 是连接)。

因此,如果你是用户ro,服务器发送给你HASH(secret.ro),那么你可以轻松计算出HASH(secret.root ),并以不同的用户身份登录。