CrescPia

Weekly Learning

今週の学びのメモです。

HSTS について

HTTP Strict Transport Security(HSTS) は HTTP リクエストをブラウザが HTTPS に変更する仕組み。
HTTP レスポンスヘッダーで Strict-Transport-Security を以下のように設定すると次回からは HTTPS でアクセスするようになる。
そしてこれは max-age で指定した秒数の間キャッシュされる。

Strict-Transport-Security: max-age=31536000


しかし HTTPS でアクセスするのは完璧ではなくて、次のようなケースでは HTTP アクセスを防げません。


完璧にしようと思うと HSTS preload という仕組みがある。
Google が管理している “HSTS preload list” があり、ここに登録するとブラウザにハードコードされる。
ハードコードされているドメインへは自動的に HTTPS でアクセスするようになる。
一旦登録するとハードコードされて取り消しできないので注意。
申請して、ブラウザの将来のバージョンで削除はできるよう。


当の HSTS preload list の登録ページでは HSTS 自体は推奨しているが、preload の登録は推奨していないようです。
HSTS Preload List Submission

Many browsers (Chrome, Safari) will automatically upgrade all HTTP navigations to HTTPS, regardless of the domain’s HSTS policy. HSTS preloading only provides value when these upgrades fail in the presence of an active attacker. The benefits provided by HSTS preloading are minimal compared to the benefits provided by HSTS. While HSTS is recommended, HSTS preloading is not recommended.


上記引用の最初の方に書いてある通り、実は Chrome や Safari では自動的に HTTP を HTTPS にアップグレードする仕組みが備わっている。
なので、HSTS preload list の登録の意義はあまりないようです。


HTTP Strict Transport Security (HSTS) and NGINX – NGINX Community Blog
Chromium Blog: Towards HTTPS by default



Jekyll の build ファイルに VS Code の workspace ファイルが含まれてしまう

Jekyll でビルドすると _site フォルダにビルド結果が作成されます。
何もしないとここに VS Code の .code-workspace ファイルも含まれてしまいます。


含まれないようにするには、_config.yml ファイルに以下のように exclude を追加すればよいです。

exclude:
  - your-workspace.code-workspace

ここで、ファイル名の指定には *.code-workspace のようなワイルドカード * は使えません。
ファイル名を全部書く必要があります。