Ruby On Rails 中的 config.force_ssl = true 的作用
引言
在config/environments/production.rb
配置文件中有这么一行配置(默认没有开启)
config.force_ssl = true
作用
-
将 http 的请求重定向到 https
-
设置 cookie 的标志位为 secure
-
启用 HSTS
关于 HSTS
作用:强制客户端(如浏览器)使用 https 与服务器建立连接,可以抵御 ssl 剥离攻击
启用方式:当客户端发起请求时,在服务器返回的响应头中包含Strict-Transport-Security
字段。非加密传输时设置的HSTS字段无效
比如, https://www.example.com 的响应头含有Strict-Transport-Security:max-age=31536000;includeSubDomains
。这意味着两点:
-
在接下来的 31536000 秒(即一年)中,浏览器向 example.com 或其子域名发送请求时,必须采用 https 来发起连接。比如,用户点击超链接或在地址栏输入 http://www.example.com ,浏览器应当自动将 http 转为 https ,然后直接向 https://www.example.com 发送请求
-
在接下来的一年中,如果 example.com 服务器发送的 TLS 证书无效,用户不能忽略浏览器警告继续访问网站
参考
HSTS 严格传输安全 - 维基百科
What does force_ssl do in Rails? - StackOverflow
评论