我正在Rails 3.0.9中共同开发一个简单的 Web 应用程序,我意识到可能会通过恶意请求篡改 session_id。请注意,这是我的第一个 RoR 应用程序,所以我的想法可能完全错误。
当前的应用程序功能需要会话,所以我转向 ActiveRecordStore 会话存储,安装它并开始在原始工作流中进行测试。我注意到 Rails 框架使用_session_id
一些随机的类似哈希的字符串的名称和值创建 cookie(在 DB SESSION 表中,此字符串对应于session_id
列)。
如果 cookie 中的值发生更改,例如使用 Firebug,则当前会话 id 更改为随 cookie 数据提供的值(用 进行检查request.session_options[:id]
),并且更改传播到数据库表,使用上述参数创建新的会话记录。
虽然这对会话的变量没有任何影响,但会话 id 已经从其通常的类似哈希的外观偏离了用户篡改的外观。
问题来了——如何检测或最好防止这种行为?