Ruby 在 Rails - Brakeman:会话 cookie 应仅设置为 HTTP

Ruby On Rails - Brakeman: Session cookies should be set to HTTP only

我正在使用 Brakeman gem 来分析我的 ruby-on-rails 应用程序代码。

它有以下High level security warning

Warning Type    | Message                                                |
--------------------------------------------------------------------------
Session Setting | Session cookies should be set to HTTP only near line 3 |

根据 documentation,将 httponly 属性设置为 true,而不是 false(默认值),在 config/initializers/session_sotre.rb 中删除此警告(对我有用)。

有人可以解释一下发生了什么吗?为什么要解决这个问题?将值设置为 true 会导致问题吗?

默认情况下,Rails 在会话 cookie 上设置 HTTPOnly 标志。此标志不允许 JavaScript 读取 cookie(see here for details) and thus prevents cross-site scripting attacks 访问 cookie。在会话 cookie 的情况下,它会通过跨站点脚本阻止 stealing/hijacking 会话。

在会话存储选项中设置 httponly: false 可关闭此保护。您可以将其设置为 true 或根本不设置(在这种情况下,默认值仍为 true)。

但是,如果应用程序出于某种原因需要从 JavaScript 访问会话 cookie,则必须关闭 httponly 选项。然而,这种情况应该很少见。