如何伪造Rails会话,验证会话ID,IP地址和http客户端

时间:2015-01-01 10:59:47

标签: ruby-on-rails ruby security session

我对Rails很新,我决定破坏我自己的身份验证系统,检查3个变量常量:IP地址,Rails会话ID和HTTP客户端。我获得这些的方式是:

ip_address = request.env['action_dispatch.remote_ip'].to_s
session_id = request.env['action_dispatch.request.unsigned_session_cookie']['session_id'].to_s
http_client = request.env['HTTP_USER_AGENT'].to_s

基本上,由于这仅供个人使用(对于我的博客),我想要的只是一次一个用户访问。

我的问题是除了'HTTP_USER_AGENT'之外,如何从我的网络应用中伪造这些信息?是否可以向Rails发送不同的IP地址和会话ID?只是在理论上。我想看看这里有什么可能......

感谢。

1 个答案:

答案 0 :(得分:1)

浏览器发送的任何内容都可以从其他浏览器中伪造,以模拟您自己的浏览器发送的内容。

这里唯一的例外是远程IP地址。那个是通过Web服务器从连接中提取出来的,不容易伪造。

因此,使用您的身份验证机制,您可能会忘记会话ID和用户代理。两者都容易受到重播攻击。

所以基本上你的保护方法就变成了IP地址保护。这对于一些简单的个人页面来说很好,但是如果你在这些页面上存储敏感信息,你可能会考虑使用更安全的东西。

您可以阅读Rails Security Guide以更好地了解可能的攻击以及Rails的一些基本安全原则。