情報処理のWeb教科書―IPA情報処理試験対策のお供に!
トップ 情報処理の知識体系 テクノロジ系 技術要素 セキュリティ セキュリティ実装技術 アプリケーションセキュリティ Webシステムのセキュリティ対策 HTTPレスポンスヘッダのセキュリティ設定
HTTPレスポンスヘッダにセキュリティ対策用のパラメータがあります。Set-Cookieのsecure、httplonlyなどHTTPレスポンスヘッダのセキュリティ設定一覧をまとめています。
この記事の目次です。
1. HTTPレスポンスヘッダのSet-Cookieのsecure属性
2. HTTPレスポンスヘッダのSet-CookieのHttpOnly属性
3. HTTP Strict Transport Security(HSTS)
HTTPレスポンスヘッダのセキュリティ設定に関連したIPA情報処理試験の過去問題
HTTPレスポンスヘッダのSet-Cookieのsecure属性について見ていきます。
暗号化されていないhttpで表示した際にCookieの値がそのまま通信経路に流れてしまいます。 Cookieの値によりユーザを識別しておりますので、Cookieの値が窃取された場合、セッションハイジャックが行われるリスクが高くなります。
HTTPレスポンスヘッダのSet-Cookieのsecure属性を設定することにより、 ブラウザにURLのスキームがhttpsのときだけ、Webブラウザからcookieが送出するよう指示を与えます。
利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。
Apache HTTP Serverで設定する場合は、設定ファイルのhttpd.confあるいは.htaccessで設定する場合は「php_flag session.cookie_secure On」を記述します。
IISで設定する場合は以下の方法があります。
名前:Set-Cookie/値:name=value; secure
以下の設定を「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.iniに「session.cookie_secure = 1」を記述します。
PHPのコード設定する場合は「ini_set('session.cookie_secure', 1);」しても設定が行えます。
HTTPレスポンスヘッダのSet-CookieのHttpOnly属性について見ていきます。
CookieにHttpOnly属性が設定されていない場合、JavaScriptによるCookieへのアクセスが行えます。 悪意のあるスクリプトが本ページで実行可能な場合、Cookieにアクセスして別のサイトへcookieを送信することができます。 Cookieの値が窃取された場合、セッションハイジャックが行われるリスクが高くなります。
HTTPレスポンスヘッダのSet-CookieのHttpOnly属性を設定することにより、 ブラウザにJavaScriptのDocument.cookie APIからCookieにアクセスできないよう指示を与えます。
利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。
Apache HTTP Serverで設定する場合は、設定ファイルのhttpd.confあるいは.htaccessで設定する場合は「php_flag session.cookie_httponly On」を記述します。
IISで設定する場合は以下の方法があります。
名前:Set-Cookie/値:name=value; HttpOnly
以下の設定を「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.iniに「session.cookie_httponly = 1」を記述します。
PHPのコード設定する場合は「ini_set('session.cookie_httponly', 1);」しても設定が行えます。
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で設定する場合は、設定ファイルのhttpd.confあるいは.htaccessで設定する場合は「Header add Strict-Transport-Security "max-age=15768000"」を記述します。
IISで設定する場合は以下の方法があります。
名前:Strict-Transport-Security/値:max-age=15768000
以下の設定を「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>
クリックジャッキング対策のX-Frame-Optionsについて見ていきます。
Frameタグが有効である場合、FirefoxやEdgeなどのブラウザで、任意のホームページ上でWebページが表示でき、クリッククリックジャッキング攻撃が行われる恐れがあります。
クリックジャッキングは、ターゲットのWebページの上に、透明なレイヤー(罠となるWebページ)を重ねます。 ユーザーにボタンやリンクをクリックさせ、意図しないコンテンツにアクセスさせます。文字の入力など、情報窃取にも利用できる攻撃です。
HTTPレスポンスヘッダ―のパラメータに「X-Frame-Options」を設定することで、Frameタグの機能に制限を与えて、クリックジャッキングなどの攻撃を防ぎます。
利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。
Apache HTTP Serverで設定する場合は、設定ファイルのhttpd.confあるいは.htaccessで設定する場合は「Header always append X-Frame-Options SAMEORIGIN」を記述します。
IISで設定する場合は以下の方法があります。
名前:X-Frame-Options/値:sameorigin
以下の設定を「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>
HTTPレスポンスヘッダ―のパラメータの「X-XSS-Protection」を設定することで、ブラウザのクロスサイトスクリプティング防止機能を有効にするよう指示が行えます。
利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。
Apache HTTP Serverで設定する場合は、設定ファイルのhttpd.confあるいは.htaccessで設定する場合は「Header always append X-XSS-Protection: "1; mode=block"」を記述します。
IISで設定する場合は以下の方法があります。
名前:X-XSS-Protection/値:1; mode=block
以下の設定を「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>
IEでは、画像ファイルなどもHTMLと判定するスニッフという処理があり、HTMLとして認識しないように設定しておくと安心です。 X-Content-Type-Optionsでブラウザにスニッフしない指示が与えられます。
利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。
Apache HTTP Serverで設定する場合は、設定ファイルのhttpd.confあるいは.htaccessで設定する場合は「Header always append X-Content-Type-Options: "nosniff"」を記述します。
IISで設定する場合は以下の方法があります。
名前:X-Content-Type-Options/値:nosniff
以下の設定を「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>
X-Download-Optionsは、ブラウザでファイルを直接開くのを禁止するパラメータです。 万が一セキュリティ被害などで感染ファイルなどが公開されてしまった場合にブラウザで自動的に実行されずに確認ダイアログで止めることができます。
利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。
Apache HTTP Serverで設定する場合は、設定ファイルのhttpd.confあるいは.htaccessで設定する場合は「Header always set X-Download-Options: noopen」を記述します。
IISで設定する場合は以下の方法があります。
名前:X-Download-Options/値:noopen
以下の設定を「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>
HTTPレスポンスヘッダのServerにバナー情報に詳細な情報を表示してしまうと、その情報をもとに脆弱性が調べられ攻撃が成功する可能性が高くなります。 極力情報が表示しないよう設定しておくのが無難です。
利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。
Apache HTTP Serverの設定ファイル「例)/etc/httpd/conf/httpd.conf」の「ServerTokens」を「Prod」に変更して最小限の表示になるよう設定変更します。 設定反映にはApacheの再起動を行います。
IISで設定する場合は以下の方法があります。
ダウンロードURL)https://www.iis.net/downloads/microsoft/url-rewrite
以下の設定を「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>
HTTPレスポンスヘッダのX-Powered-Byにバナー情報に詳細な情報を表示してしまうと、その情報をもとに脆弱性が調べられ攻撃が成功する可能性が高くなります。 極力情報が表示しないよう設定しておくのが無難です。
利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。
PHPの設定ファイル(例 /etc/php.ini)の「expose_php」の設定を「OFF」に変更します。 設定を反映するにはApacheやphp-fpmなど(ソフトウェア構成により異なる)のミドルウェアの再起動が必要です。
以下ではHTTPレスポンスヘッダのセキュリティ設定に関連したIPA情報処理試験の過去問とその解説をまとめています。
情報セキュリティとは何か、情報セキュリティのテキストコンテンツをテーマに知識をまとめています。またIPAの情報処理試験の情報セキュリティ関連の問題も解説しています。
情報処理試験対策用のサイトオリジナル教科書をテーマにテクノロジ系の知識をまとめています。
Copyright (C) 2010-2023 情報処理のWeb教科書. All Rights Reserved. Loarding…