目次

この記事の目次です。

1. アクセス制限

2. HTTPレスポンスヘッダの設定

3. PHPの設定

更新履歴

1. アクセス制限

例えば、WordPressを構築中にセットアップ画面にアクセスされた場合、乗っ取りにあってしまう恐れがあります。 また、クローラに巡回され検索エンジンに工事中のコンテンツが表示されると問題になることがあります。

工事中のコンテンツなどに設定するアクセス制限の方法について見ていきます。

BASIC認証によるアクセス制限

BASIC認証は、ベーシック認証や基本認証とも呼ばれる、Webサーバで設定が行えるID/パスワードの入力ダイアログを表示して行う認証です。

.htaccessでの設定例

.htaccessでの設定例は以下です。「.htpassword」のようなファイル名の認証ファイルを指定します。

AuthUserFile <パス>/.htpassword
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user

認証ファイル「.htpassword」の作成方法

認証ファイルは「htpasswd」コマンドで作成が行えます。 SSHなどでWebサーバのターミナルに接続して「htpasswd」コマンドが利用できます。

htpasswd -c -b .htpasswd <ユーザ名> <パスワード>

上記コマンドで生成された「.htpasswd」ファイルを任意の場所に配置して、AuthUserFileにパスを設定します。

IPによるアクセス制限

.htaccessでIPによるアクセス制限も行えます。

.htaccessでの設定例

Apache 2.4からはRequireディレクティブを使用します。

Apache 2.2
order deny,allow
deny from all
allow from <許可するIPアドレス>
Apache 2.4
Require all denied
Require ip <許可するIPアドレス>

2. HTTPレスポンスヘッダの設定

.htaccessでHTTPレスポンスヘッダの設定が行えます。

mod_headers

mod_headersを利用することで、HTTP リクエストのヘッダと応答のヘッダのカスタマイズが行えます。

Strict-Transport-Security

httpからhttpsにリダイレクトする設定を行っても、訪問者はリダイレクトされる前にまず、暗号化されないhttpでサイトと通信する可能性があります。 それを改善するのが「Strict-Transport-Security」です。 「Strict-Transport-Security」をレスポンスヘッダに設定することで Webサイトにアクセスすると、以降の指定された期間、当該サイトには全てHTTPSによって接続するようブラウザに指示が行えます。

.htaccessでの設定例は以下です。

<ifModule mod_headers.c>
Header add Strict-Transport-Security "max-age=15768000"
</ifModule>

X-Frame-Options

外部サイトでFrameタグを使用して表示できる場合、クリッククリックジャッキング攻撃が行われる恐れがあります。

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

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

.htaccessでの設定例は以下です。

<ifModule mod_headers.c>
Header always append X-Frame-Options SAMEORIGIN
</ifModule>

X-XSS-Protection

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

.htaccessでの設定例は以下です。

<ifModule mod_headers.c>
Header always append X-XSS-Protection: "1; mode=block"
</ifModule>

mod_php

mod_phpを利用することで、PHP関連の設定が行えます。

Set-Cookieのsecure属性

セッションを利用している場合、Cookieの値によりユーザを識別しており、http(暗号化されていない)で表示した際に通信経路でCookieの値が窃取される恐れがあります。

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

.htaccessでの設定例は以下です。

PHP7の場合
<ifModule mod_php7.c>
php_flag session.cookie_secure On
</ifModule>
PHP5の場合
<ifModule mod_php5.c>
php_flag session.cookie_secure On
</ifModule>

Set-CookieのHttpOnly属性

JavaScriptからCookieへのアクセスが行えますと、万が一悪意のあるスクリプトが実行されてしまった場合、Cookieが摂取され、セッションハイジャックが行われるリスクが高くなります。

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

.htaccessでの設定例は以下です。

PHP7の場合
<ifModule mod_php7.c>
php_flag session.cookie_httponly On
</ifModule>
PHP5の場合
<ifModule mod_php5.c>
php_flag session.cookie_httponly On
</ifModule>

3. PHPの設定

.htaccessでPHPの設定が行えます。

display_errors

ブラウザにPHPのエラー情報が表示されるとエラーに含まれるパス情報からサーバのアカウント名の露呈など重要な情報が取得されてしまう場合があります。 display_errorsで制御が可能です。

.htaccessでの設定例は以下です。

php_flag display_errors Off

更新履歴

更新履歴になります。

位置:トップセキュリティ対策