nie*_*lsr 70 apache .htaccess mod-headers
我的Web应用程序在我控制的不同数量的主机上运行.为了防止需要更改每个vhost的Apache配置,我在我的repo中使用.htaccess文件添加了大部分配置,因此每个主机的基本设置只是几行.这也可以在部署新版本时更改配置.目前.htaccess(un)设置头文件,做一些重写魔术并控制UA的缓存.
我想使用.htaccess在应用程序中启用HSTS.只需设置标题很简单:
Header always set Strict-Transport-Security "max-age=31536000"
Run Code Online (Sandbox Code Playgroud)
但规范明确指出:"HSTS主机不得在通过非安全传输传输的HTTP响应中包含STS头字段." 因此,我不希望在通过HTTP连接发送标头时发送标头.见http://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14.
我试图使用环境变量设置标题,但我被困在那里.有谁知道怎么做?
nie*_*lsr 101
显然,有一个可用的HTTPS环境变量可以轻松使用.对于有相同问题的人:
Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
Run Code Online (Sandbox Code Playgroud)
LJT*_*LJT 22
为了建立在nielsr的答案之上,我在.htaccess中使用了以下内容来满足https://hstspreload.org上的安全部署建议,该建议会将域硬编码到Chrome浏览器中.请注意,这将在您的子域中强制执行HSTS,并且预载列表中的包含不能轻易撤消,因此rtfm.
<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
</IfModule>
Run Code Online (Sandbox Code Playgroud)
Yud*_*ira 10
您可以使用它并将其放在您的 htaccess 文件中以符合https://hstspreload.org。把它放在你的 .htaccess 文件中。
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L,E=HTTPS:1]
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
Run Code Online (Sandbox Code Playgroud)
首先,它会将非 https 重定向到 https。并使用 HSTS 标头将非 www https 重定向到 www https。
(http://example.com -> https://example.com -> https://www.example.com - 带有 HSTS 标头)
经过测试并符合https://hstspreload.org
| 归档时间: |
|
| 查看次数: |
55873 次 |
| 最近记录: |