Ruby On Rails 中的 config.force_ssl = true 的作用

引言

config/environments/production.rb配置文件中有这么一行配置(默认没有开启)

config.force_ssl = true

作用

  1. 将 http 的请求重定向到 https

  2. 设置 cookie 的标志位为 secure

  3. 启用 HSTS

关于 HSTS

作用:强制客户端(如浏览器)使用 https 与服务器建立连接,可以抵御 ssl 剥离攻击

启用方式:当客户端发起请求时,在服务器返回的响应头中包含Strict-Transport-Security字段。非加密传输时设置的HSTS字段无效

比如, https://www.example.com 的响应头含有Strict-Transport-Security:max-age=31536000;includeSubDomains。这意味着两点:

  1. 在接下来的 31536000 秒(即一年)中,浏览器向 example.com 或其子域名发送请求时,必须采用 https 来发起连接。比如,用户点击超链接或在地址栏输入 http://www.example.com ,浏览器应当自动将 http 转为 https ,然后直接向 https://www.example.com 发送请求

  2. 在接下来的一年中,如果 example.com 服务器发送的 TLS 证书无效,用户不能忽略浏览器警告继续访问网站

参考

HSTS 严格传输安全 - 维基百科
What does force_ssl do in Rails? - StackOverflow

评论