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
选项。然而,这种情况应该很少见。
我正在使用 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
选项。然而,这种情况应该很少见。