88

私の Web アプリケーションは、私が制御する別の数のホストで実行されます。各 vhost の Apache 構成を変更する必要がないように、レポに .htaccess ファイルを使用してほとんどの構成を追加するので、各ホストの基本的なセットアップは数行で済みます。これにより、新しいバージョンのデプロイ時に構成を変更することもできます。現在、.htaccess はヘッダーを設定 (解除) し、いくつかの書き換えマジックを実行し、UA のキャッシュを制御します。

.htaccess を使用して、アプリケーションで HSTS を有効にしたいと考えています。ヘッダーを設定するだけで簡単です:

Header always set Strict-Transport-Security "max-age=31536000"

しかし、仕様には次のように明確に記載されています。したがって、HTTP 接続を介して送信するときにヘッダーを送信したくありません。https://datatracker.ietf.org/doc/html/draft-ietf-websec-strict-transport-sec-14を参照してください。

環境変数を使用してヘッダーを設定しようとしましたが、そこで行き詰まりました。その方法を知っている人はいますか?

4

5 に答える 5

124

簡単に使えるHTTPS環境変数が用意されているようです。同じ質問を持つ人々のために:

Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
于 2014-06-10T15:31:31.533 に答える
11

https://hstspreload.orgに準拠するために、これを使用して htaccess ファイルに配置できます。これを .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

最初に、非 https から https へのリダイレクトを行います。HSTSヘッダーを使用して、非www httpsをwww httpsにリダイレクトします。

( http://example.com -> https://example.com -> https://www.example.com - HSTS ヘッダー付き)

テスト済みで、 https: //hstspreload.org に準拠しています

于 2019-05-09T16:39:01.180 に答える
1

さらに別の方法として、ヘッダーを常に設定し、SSL 以外の接続では条件付きで削除する方法があります。

Header always set   Strict-Transport-Security "max-age=31536000" early
Header        unset Strict-Transport-Security env=!HTTPS

これには、ディレクティブを条件とフラグHeaderの両方で使用できるという利点があります。ディレクティブは 1 つだけで、一緒に使用することはできません。相互に排他的です (公式ドキュメントを参照してください: https://httpd.apache.org/docs/current/mod/mod_headers.html#header )。envearlyHeaderenvearly

于 2019-01-15T13:53:56.883 に答える