---
title: "ウェブサーバーのセキュリティ"
slug: "web-server-security"
abstract: "機密ヘッダーを削除し、XSSやクリックジャッキングなどの一般的な脆弱性から保護することでウェブサーバーのセキュリティを強化しましょう。"
---
# ウェブサーバーのセキュリティ

Server、X-Powered-By、バージョン固有のヘッダーなど、機密情報を露出させるヘッダーを削除したり、X-Content-Type-OptionsやX-XSS-Protectionなどのセキュリティ重視ヘッダーを追加することで、一般的な攻撃を軽減するためにウェブサーバーのセキュリティを高めることができます。

## ヘッダーを削除してください

デフォルトでは、一部のHTTPヘッダーがサーバーの攻撃脆弱性を高める情報を漏らす場合があります。このリスクを減らすために、これらのヘッダーを無効化することを強くお勧めします。

### IIS 10以上

Windows Server 2016に付属するIISバージョン10以降、web.configファイルを更新することでServerヘッダーを削除できます。

例:

<system.webServer>
 <security>
 <requestFiltering removeServerHeader="true"/>
 </security>
 </system.webServer>

### 旧IISバージョン

古いIISバージョンではヘッダーの削除はサポートされていませんが、リライトルールを使って値を変更できます。

例:

<system.webServer>
 <rewrite>
 <outboundRules>
 <rule name="changeServerHeader">
 <match serverVariable="RESPONSE\_Server" pattern=".\*" />
 <action type="Rewrite"/>
 </rule>
 </outboundRules>
 </rewrite>
 </system.webServer>

これによりServerヘッダーが空の値で上書きされます。

### Xパワードバイ

設定でX-Powered-Byヘッダーを削除することもできます。

例:

<system.webServer>
 <httpProtocol allowKeepAlive="true">
 <customHeaders>
 <remove name="X-Powered-By" />
 </customHeaders>
 </httpProtocol>
 <system.webServer/>

### X-AspNetバージョン

*system.web*要素を見つけて行httpRuntime enableVersionHeader="false"/を追加することでX-AspNet-Versionヘッダーを削除できます。

例:

<system.web>
 <httpRuntime enableVersionHeader="false"/>
 </system.web>

### X-AspNetMvc-バージョン

global.asaxファイルに以下のコードを追加することでX-AspNetMvc-Versionを解除できます。

MvcHandler.DisableMvcResponseHeader = true;

> !注ポータルのウェブアプリケーションでは、このヘッダーはデフォルトで省略されています。

### X-コンテンツタイプ-オプション

また、X-Content-Type-Optionsヘッダーをnosniffに設定することもできます。これにより、ブラウザが「マイムスニッフ」や応答の内容タイプを推測しようとするのを防ぎ、サーバーが宣言したコンテンツタイプを確実に使うことができます。

<system.webServer>
 <httpProtocol>
 <customHeaders>
 <remove name="X-Content-Type-Options"/>
 <add name="X-Content-Type-Options" value="nosniff"/>
 </customHeaders>
 </httpProtocol>
 </system.webServer>

## ヘッダーの追加

また、MIME型スニッフィング、クロスサイトスクリプト(XSS)、クリックジャッキングなどの一般的な脆弱性から保護し、クッキーが安全に扱われるようにするために、いくつかのヘッダーを追加することを推奨します。

### X-フレーム-オプション

X-Frame-Optionsヘッダーを設定して、フレーム内の他のウェブサイトの入Content Hubを防ぎましょう。

可能な値は以下の通りです:

-   DENY
-   SAMEORIGIN
-   ALLOW-FROM [https://example.com/](https://example.com/)

特定の実装のフレームとしてContent Hubを有効にする必要がある場合は、DENYの使用を推奨します。例えば:

<httpProtocol>
 <customHeaders>
 <add name="X-Frame-Options" value="DENY" />
 </customHeaders>
 </httpProtocol>

### X-XSSプロテクション

X-XSS-ProtectionヘッダーをXSS攻撃に対する追加の保護層として使用してください。

可能な値は以下の通りです:

-   0 - XSSフィルタリングを無効にする。
    
-   1 - XSSフィルタリングを有効にする(通常はブラウザのデフォルト機能)。クロスサイトスクリプティング攻撃が検出された場合、ブラウザは安全でない部分を削除してページをサニティ化します。
    
-   1; mode=block - XSSフィルタリングを有効にする。攻撃が検出された場合、ブラウザはページのレンダリングを阻止する。
    
-   1; mode=report - XSSフィルタリングを有効にする。クロスサイトスクリプティング攻撃が検出された場合、ブラウザはページをサニティ化し、違反を報告します。これはCSPのreport-uri指令を使って報告を送信します(Chromiumのみ)。
    
    例えば:
    

<httpProtocol>
 <customHeaders>
 <add name="X-XSS-Protection" value="1; mode=block" />
 </customHeaders>
 </httpProtocol>

> !注Mozillaは[X-XSS-Protection](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection)に関する詳細情報を自社のウェブサイトで提供しています。

### セキュアクッキー

第三者によるクッキーの盗難を防ぐために、SecureとHTTPOnlyフラグを追加してください。 SecureフラグはクッキーがHTTPS接続経由でのみ送信されることを保証し、HTTPOnlyフラグはJavaScriptクッキーへのアクセスを防ぎ、XSS攻撃に対する追加の保護層を加えます。

例えば:

<system.web>
 <httpCookies httpOnlyCookies="true" requireSSL="true" />
 </system.web>