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

How to fake Rails session that verifies session ID, IP address and http client

我是 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?只是理论上。我想一睹这里的可能性...

谢谢。

浏览器发送的任何内容都可以从另一个浏览器伪造,以模仿您自己的浏览器发送的内容。

此处唯一的例外是远程 IP 地址。那个是网络服务器从连接中提取出来的,不容易伪造。

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

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

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