情報処理のWeb教科書―IPA情報処理試験対策のお供に!

HTTPレスポンスヘッダのセキュリティ設定―Set-Cookieのsecure、httplonlyなど一覧

トップ 情報処理の知識体系 テクノロジ系 技術要素 セキュリティ セキュリティ実装技術 アプリケーションセキュリティ Webシステムのセキュリティ対策 HTTPレスポンスヘッダのセキュリティ設定

HTTPレスポンスヘッダにセキュリティ対策用のパラメータがあります。Set-Cookieのsecure、httplonlyなどHTTPレスポンスヘッダのセキュリティ設定一覧をまとめています。

▲記事トップへ

目次

この記事の目次です。

1. HTTPレスポンスヘッダのSet-Cookieのsecure属性

2. HTTPレスポンスヘッダのSet-CookieのHttpOnly属性

3. HTTP Strict Transport Security(HSTS)

4. X-Frame-Options

5. X-XSS-Protection

6. X-Content-Type-Options

7. X-Download-Options

8. Server

9. X-Powered-By

HTTPレスポンスヘッダのセキュリティ設定に関連したIPA情報処理試験の過去問題

もっと知識を広げるための参考

更新履歴

1. HTTPレスポンスヘッダのSet-Cookieのsecure属性

HTTPレスポンスヘッダのSet-Cookieのsecure属性について見ていきます。

解説

暗号化されていないhttpで表示した際にCookieの値がそのまま通信経路に流れてしまいます。 Cookieの値によりユーザを識別しておりますので、Cookieの値が窃取された場合、セッションハイジャックが行われるリスクが高くなります。

HTTPレスポンスヘッダのSet-Cookieのsecure属性を設定することにより、 ブラウザにURLのスキームがhttpsのときだけ、Webブラウザからcookieが送出するよう指示を与えます。

設定方法

利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。

Apache HTTP Serverで設定する場合

Apache HTTP Serverで設定する場合は、設定ファイルのhttpd.confあるいは.htaccessで設定する場合は「php_flag session.cookie_secure On」を記述します。

IISで設定する場合

IISで設定する場合は以下の方法があります。

管理ツールを使用する場合
  1. Webサーバのデスクトップからスタート画面を開き、「管理ツール」をクリック
  2. 「インターネット インフォメーション サービス(IIS)マネージャー」をクリック
  3. 左の「接続」リストから、対象のホームページを選択
  4. 「HTTP応答ヘッダー」をクリック
  5. 右の「操作」リストから、「追加」をクリック
  6. 「名前」「値」を入力し、「OK」を押下

    名前:Set-Cookie/値:name=value; secure

web.configで設定する場合

以下の設定を「web.config」として保存し、公開領域に置きます。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="Set-Cookie" value="" name="value; secure" />
            </customHeaders>
        </httpProtocol>
    </system.webServer>
</configuration>

PHPで設定する場合

PHPで設定する場合は、設定ファイルのphp.iniに「session.cookie_secure = 1」を記述します。

PHPのコード設定する場合は「ini_set('session.cookie_secure', 1);」しても設定が行えます。

2. HTTPレスポンスヘッダのSet-CookieのHttpOnly属性

HTTPレスポンスヘッダのSet-CookieのHttpOnly属性について見ていきます。

解説

CookieにHttpOnly属性が設定されていない場合、JavaScriptによるCookieへのアクセスが行えます。 悪意のあるスクリプトが本ページで実行可能な場合、Cookieにアクセスして別のサイトへcookieを送信することができます。 Cookieの値が窃取された場合、セッションハイジャックが行われるリスクが高くなります。

HTTPレスポンスヘッダのSet-CookieのHttpOnly属性を設定することにより、 ブラウザにJavaScriptのDocument.cookie APIからCookieにアクセスできないよう指示を与えます。

設定方法

利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。

Apache HTTP Serverで設定する場合

Apache HTTP Serverで設定する場合は、設定ファイルのhttpd.confあるいは.htaccessで設定する場合は「php_flag session.cookie_httponly On」を記述します。

IISで設定する場合

IISで設定する場合は以下の方法があります。

管理ツールを使用する場合
  1. Webサーバのデスクトップからスタート画面を開き、「管理ツール」をクリック
  2. 「インターネット インフォメーション サービス(IIS)マネージャー」をクリック
  3. 左の「接続」リストから、対象のホームページを選択
  4. 「HTTP応答ヘッダー」をクリック
  5. 右の「操作」リストから、「追加」をクリック
  6. 「名前」「値」を入力し、「OK」を押下

    名前:Set-Cookie/値:name=value; HttpOnly

web.configで設定する場合

以下の設定を「web.config」として保存し、公開領域に置きます。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="Set-Cookie" value="" name="value; HttpOnly" />
            </customHeaders>
        </httpProtocol>
    </system.webServer>
</configuration>

PHPで設定する場合

PHPで設定する場合は、設定ファイルのphp.iniに「session.cookie_httponly = 1」を記述します。

PHPのコード設定する場合は「ini_set('session.cookie_httponly', 1);」しても設定が行えます。

3. HTTP Strict Transport Security(HSTS)

HTTP Strict Transport Security(HSTS)は、 Webサイトにアクセスすると、Webブラウザは、以降の指定された期間、当該サイトには全てHTTPSによって接続する機能です。

解説

httpはプロトコルの仕様上、通信経路での情報監視し、改ざんエラーとならず気付かない問題があります。 たとえば、クラッカーに不正侵入されたWi-Fiのアクセスポイントを使用して、HTTP リクエストが傍受され、偽のサイトへリダイレクトされるなどの被害に遭うおそれがあります。

httpからhttpsにリダイレクトする設定を行って訪問者はリダイレクトされる前にまず、暗号化されないhttpでサイトと通信する可能性があります。 訪問者が http://<ドメイン>/ または<ドメイン>で始まるURLでページを表示した際に、Webサイトが接続を HTTP で受け付け、 HTTPS にリダイレクトするようになっています。 訪問者はリダイレクトされる前にまず、暗号化されないバージョンのサイトと通信し、中間者攻撃に遭うおそれがあります。

HTTPレスポンスヘッダ―のパラメータに「Strict-Transport-Security」を設定することで、ブラウザーは自動的に HTTPS のみを用いるよう制御して、中間者攻撃の実行を防ぎます。

設定方法

利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。

Apache HTTP Serverで設定する場合

Apache HTTP Serverで設定する場合は、設定ファイルのhttpd.confあるいは.htaccessで設定する場合は「Header add Strict-Transport-Security "max-age=15768000"」を記述します。

IISで設定する場合

IISで設定する場合は以下の方法があります。

管理ツールを使用する場合
  1. Webサーバのデスクトップからスタート画面を開き、「管理ツール」をクリック
  2. 「インターネット インフォメーション サービス(IIS)マネージャー」をクリック
  3. 左の「接続」リストから、対象のホームページを選択
  4. 「HTTP応答ヘッダー」をクリック
  5. 右の「操作」リストから、「追加」をクリック
  6. 「名前」「値」を入力し、「OK」を押下

    名前:Strict-Transport-Security/値:max-age=15768000

web.configで設定する場合

以下の設定を「web.config」として保存し、公開領域に置きます。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="Strict-Transport-Security" value="max-age=15768000" />
            </customHeaders>
        </httpProtocol>
    </system.webServer>
</configuration>

4. X-Frame-Options

クリックジャッキング対策のX-Frame-Optionsについて見ていきます。

解説

Frameタグが有効である場合、FirefoxやEdgeなどのブラウザで、任意のホームページ上でWebページが表示でき、クリッククリックジャッキング攻撃が行われる恐れがあります。

クリックジャッキングは、ターゲットのWebページの上に、透明なレイヤー(罠となるWebページ)を重ねます。 ユーザーにボタンやリンクをクリックさせ、意図しないコンテンツにアクセスさせます。文字の入力など、情報窃取にも利用できる攻撃です。

HTTPレスポンスヘッダ―のパラメータに「X-Frame-Options」を設定することで、Frameタグの機能に制限を与えて、クリックジャッキングなどの攻撃を防ぎます。

設定方法

利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。

Apache HTTP Serverで設定する場合

Apache HTTP Serverで設定する場合は、設定ファイルのhttpd.confあるいは.htaccessで設定する場合は「Header always append X-Frame-Options SAMEORIGIN」を記述します。

IISで設定する場合

IISで設定する場合は以下の方法があります。

管理ツールを使用する場合
  1. Webサーバのデスクトップからスタート画面を開き、「管理ツール」をクリック
  2. 「インターネット インフォメーション サービス(IIS)マネージャー」をクリック
  3. 左の「接続」リストから、対象のホームページを選択
  4. 「HTTP応答ヘッダー」をクリック
  5. 右の「操作」リストから、「追加」をクリック
  6. 「名前」「値」を入力し、「OK」を押下

    名前:X-Frame-Options/値:sameorigin

web.configで設定する場合

以下の設定を「web.config」として保存し、公開領域に置きます。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="X-Frame-Options" value="sameorigin" />
            </customHeaders>
        </httpProtocol>
    </system.webServer>
</configuration>

5. X-XSS-Protection

HTTPレスポンスヘッダ―のパラメータの「X-XSS-Protection」を設定することで、ブラウザのクロスサイトスクリプティング防止機能を有効にするよう指示が行えます。

設定方法

利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。

Apache HTTP Serverで設定する場合

Apache HTTP Serverで設定する場合は、設定ファイルのhttpd.confあるいは.htaccessで設定する場合は「Header always append X-XSS-Protection: "1; mode=block"」を記述します。

IISで設定する場合

IISで設定する場合は以下の方法があります。

管理ツールを使用する場合
  1. Webサーバのデスクトップからスタート画面を開き、「管理ツール」をクリック
  2. 「インターネット インフォメーション サービス(IIS)マネージャー」をクリック
  3. 左の「接続」リストから、対象のホームページを選択
  4. 「HTTP応答ヘッダー」をクリック
  5. 右の「操作」リストから、「追加」をクリック
  6. 「名前」「値」を入力し、「OK」を押下

    名前:X-XSS-Protection/値:1; mode=block

web.configで設定する場合

以下の設定を「web.config」として保存し、公開領域に置きます。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="X-XSS-Protection" value="1; mode=block" />
            </customHeaders>
        </httpProtocol>
    </system.webServer>
</configuration>

6. X-Content-Type-Options

IEでは、画像ファイルなどもHTMLと判定するスニッフという処理があり、HTMLとして認識しないように設定しておくと安心です。 X-Content-Type-Optionsでブラウザにスニッフしない指示が与えられます。

設定方法

利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。

Apache HTTP Serverで設定する場合

Apache HTTP Serverで設定する場合は、設定ファイルのhttpd.confあるいは.htaccessで設定する場合は「Header always append X-Content-Type-Options: "nosniff"」を記述します。

IISで設定する場合

IISで設定する場合は以下の方法があります。

管理ツールを使用する場合
  1. Webサーバのデスクトップからスタート画面を開き、「管理ツール」をクリック
  2. 「インターネット インフォメーション サービス(IIS)マネージャー」をクリック
  3. 左の「接続」リストから、対象のホームページを選択
  4. 「HTTP応答ヘッダー」をクリック
  5. 右の「操作」リストから、「追加」をクリック
  6. 「名前」「値」を入力し、「OK」を押下

    名前:X-Content-Type-Options/値:nosniff

web.configで設定する場合

以下の設定を「web.config」として保存し、公開領域に置きます。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="X-Content-Type-Options" value="nosniff" />
            </customHeaders>
        </httpProtocol>
    </system.webServer>
</configuration>

7. X-Download-Options

X-Download-Optionsは、ブラウザでファイルを直接開くのを禁止するパラメータです。 万が一セキュリティ被害などで感染ファイルなどが公開されてしまった場合にブラウザで自動的に実行されずに確認ダイアログで止めることができます。

設定方法

利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。

Apache HTTP Serverで設定する場合

Apache HTTP Serverで設定する場合は、設定ファイルのhttpd.confあるいは.htaccessで設定する場合は「Header always set X-Download-Options: noopen」を記述します。

IISで設定する場合

IISで設定する場合は以下の方法があります。

管理ツールを使用する場合
  1. Webサーバのデスクトップからスタート画面を開き、「管理ツール」をクリック
  2. 「インターネット インフォメーション サービス(IIS)マネージャー」をクリック
  3. 左の「接続」リストから、対象のホームページを選択
  4. 「HTTP応答ヘッダー」をクリック
  5. 右の「操作」リストから、「追加」をクリック
  6. 「名前」「値」を入力し、「OK」を押下

    名前:X-Download-Options/値:noopen

web.configで設定する場合

以下の設定を「web.config」として保存し、公開領域に置きます。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="X-Download-Options" value="noopen" />
            </customHeaders>
        </httpProtocol>
    </system.webServer>
</configuration>

8. Server

HTTPレスポンスヘッダのServerにバナー情報に詳細な情報を表示してしまうと、その情報をもとに脆弱性が調べられ攻撃が成功する可能性が高くなります。 極力情報が表示しないよう設定しておくのが無難です。

設定方法

利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。

Apache HTTP Serverで設定する場合

Apache HTTP Serverの設定ファイル「例)/etc/httpd/conf/httpd.conf」の「ServerTokens」を「Prod」に変更して最小限の表示になるよう設定変更します。 設定反映にはApacheの再起動を行います。

IISで設定する場合

IISで設定する場合は以下の方法があります。

管理ツールを使用する場合
  1. 「URL Write」を、Webサーバにインストール

    ダウンロードURL)https://www.iis.net/downloads/microsoft/url-rewrite

  2. Webサーバのデスクトップからスタート画面を開き、「管理ツール」をクリック
  3. 「インターネット インフォメーション サービス(IIS)マネージャー」をクリック
  4. 左の「接続」リストから、対象のホームページを選択
  5. 「URL 書き換え(URL Rewrite)」をクリック
  6. 右の「操作」リストから、「規則の追加(Add Rule(s))...」をクリック
  7. 「送信規則(Outbound rules)」の「空の規則(Blank rule)」をクリック
  8. 以下のように入力
web.configで設定する場合

以下の設定を「web.config」として保存し、公開領域に置きます。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <outboundRules>
                <rule name="test">
                    <match serverVariable="RESPONSE_SERVER" pattern=".*" />
                    <action type="Rewrite" />
                </rule>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

9. X-Powered-By

HTTPレスポンスヘッダのX-Powered-Byにバナー情報に詳細な情報を表示してしまうと、その情報をもとに脆弱性が調べられ攻撃が成功する可能性が高くなります。 極力情報が表示しないよう設定しておくのが無難です。

設定方法

利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。

PHPで設定する場合

PHPの設定ファイル(例 /etc/php.ini)の「expose_php」の設定を「OFF」に変更します。 設定を反映するにはApacheやphp-fpmなど(ソフトウェア構成により異なる)のミドルウェアの再起動が必要です。

HTTPレスポンスヘッダのセキュリティ設定に関連したIPA情報処理試験の過去問題

以下ではHTTPレスポンスヘッダのセキュリティ設定に関連したIPA情報処理試験の過去問とその解説をまとめています。

もっと知識を広げるための参考

更新履歴

戻る

スポンサーリンク

情報処理の知識体系

各試験の問題と解説

ランダム出題・採点アプリ

プログラミング

スポンサーリンク