IT業界の技術をメモ・情報公開できる

セキュリティ対応

登録日:2024-11-13    更新日:2024-11-18
@ms
・セキュリティヘッダ "HTTP Strict Transport Security (HSTS)" の設定
HSTSは、サイトがHTTPではなくHTTPSでしかアクセスできないようにブラウザに強制するヘッダーです。

・セキュリティヘッダ "X-Frame-Options" の設定
外部サイトからフレーム呼び出しできないようにする

・X-Content-Type-Options: nosniff の設定
ブラウザが MIMEタイプを推測せず、サーバーから送信された Content-Type ヘッダーに厳密に従います。

・バージョン情報の(x-powered-by)削除
PHPのバージョン情報がでないようにする


・セキュリティヘッダ "HTTP Strict Transport Security (HSTS)" の設定
---

### HSTS設定確認方法
1. **ブラウザのデベロッパーツールを使用**
- **Chrome**や**Firefox**などのブラウザでサイトを開き、デベロッパーツールを開きます。
- 「Network(ネットワーク)」タブに移動し、サイトのメインリクエスト(通常はHTMLファイル)をクリックします。
- 「Headers(ヘッダー)」の「Response Headers(レスポンスヘッダー)」を確認し、`Strict-Transport-Security` ヘッダーが含まれているかどうかを確認します。

2. **オンラインツールを使用**
- [SSL Labs](https://www.ssllabs.com/ssltest/) や [Security Headers](https://securityheaders.com/) などのオンラインツールでサイトのURLを入力し、セキュリティヘッダーが適切に設定されているかチェックします。
- 「Strict-Transport-Security」が存在しない場合、HSTSが未設定であることがわかります。

---

### HSTS設定方法
HSTSは、サイトがHTTPではなくHTTPSでしかアクセスできないようにブラウザに強制するヘッダーです。以下の手順で設定を行います。

1. **サーバーの設定ファイルにHSTSヘッダーを追加**
- **Apache**の場合:
```apache
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>
```
- **Nginx**の場合:
```nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
```
※ `max-age=31536000` は1年間の期限を設定しています。`includeSubDomains` を追加するとサブドメインにも適用されます。

2. **HSTSの設定確認**
設定後、再度ブラウザやオンラインツールでHSTSヘッダーが正しく反映されているか確認します。

3. **`preload` ディレクティブの追加(任意)**
- `preload` を追加すると、HSTS Preload Listに登録することができます。これにより、ブラウザはHSTSが有効なドメインとして認識し、HTTPS以外での接続を試みなくなります。
- [HSTS Preload](https://hstspreload.org/)の公式サイトで、要件に沿っていることを確認し、必要に応じてリストに登録してください。

---

[htaccssの場合]
# HSTSを有効化して、HTTPS接続を強制する
<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>

[phpの場合]
// HTTPSアクセス時にHSTSヘッダーを追加
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
header('Strict-Transport-Security: max-age=31536000; includeSubDomains; preload');
}


### 注意点
- HSTSはブラウザが一度読み込むと期限が切れるまでHTTP接続を許可しなくなります。そのため、設定に誤りがないか十分確認してから導入しましょう。
- サイト全体がHTTPSでアクセス可能であることが前提です。HTTPページが存在する場合はリダイレクトの設定が必要です。

以上で、HSTSが設定されていない場合の確認方法と対応方法の説明です。





・セキュリティヘッダ "X-Frame-Options" の設定
[htaccssの場合]
Header always append X-Frame-Options SAMEORIGIN


・X-Content-Type-Options: nosniff の設定
[htaccssの場合]
Header always set X-Content-Type-Options nosniff


・バージョン情報の(x-powered-by)削除
[ini]
expose_php = Off

※iniが弄れない場合(htaccess設定できない)
[php]
header_remove('X-Powered-By');







一覧に戻る