Ruby on Rails是否在内部使用MD5加密哈希函数,特别是对于会话?
Ruby on Rails Security Guide表示:
会话ID是一个32字节长的MD5哈希值。会话ID由随机字符串的哈希值组成。随机字符串是当前时间,0到1之间的随机数,Ruby解释器的进程ID号(也基本上是随机数)和常量字符串。目前,蛮力Rails'是不可行的。会话ID。 迄今为止,MD5尚未妥协,但存在冲突,因此理论上可以使用相同的哈希值创建另一个输入文本。但到目前为止,这没有任何安全影响。
然而,众所周知,MD5确实受到了损害。例如。 Wikipedia:MD5州:
MD5哈希函数的安全性严重受损。存在可以在几秒钟内发现碰撞的碰撞攻击......
我是否误解了,或者RailsGuides实际上只是Rails的w3schools?
答案 0 :(得分:2)
请注意,在https://github.com/rails/rails/pull/25035报告后,此部分指南已在https://github.com/rails/rails/issues/25032中更新。
该指南的位已经过时了(例如,xss部分还没有意识到rails认为所有字符串都需要转义,除非另有说明) - 它肯定可以用一些爱来做。看起来这部分至少从2009年开始没有被触及
Rails没有使用您描述的方法长时间生成会话ID。如果我正确读取符文,因为rails 2.3会话ID已经生成SecureRandom
,它提供加密安全的随机数(使用Ruby的内置支持1.8.7,或使用特定于平台的方法,如openssl, / dev / urandom,win32 apis)
此外,自rails 2.0以来,默认会话存储一直是cookie存储,它首先不使用会话ID(或者更确切地说会话cookie的值是会话,而不是而不是从其他地方读取会话的密钥)