MENU
[ sponsored ]

「副業徹底調査」のコーナーでは、ポイ活・ハンドメイド・アフィリエイトの3つのでテーマで芸人のバンビーノ(ダンソン♪で一世を風靡した)藤田さん家族が2週間副業してどのくらい稼げるかに挑戦していました。

XserverでBasic認証を使用している時のhtaccessを見直す

当ページのリンクには広告が含まれています。

Xserverは誰もが知っているメジャーなレンタルサーバー業者。サーバーの管理画面で出来る事も昔からXserverは自由度が高かったが、最近は使いやすさも向上して十分満足できる。

ノンプログラマーから見ると、管理画面からの操作で基本的にはどの設定も可能で必要なコードがあれば自動で書き出してくれます。自動で書き出してくれるのは大変助かりますが、全てが万能では無いので、脆弱性をチェックしてくれる機関から指摘があった部分や、自動設定で気が付いた修正内容があったので、その備忘録。

  • SSLの設定内容がコピペできる
  • 迷惑メールにならない設定ができる
目次

SSLの自動設定したhtaccess記載見直し

SSLは最近は無料で使えるのが一般的で大変助かりますが、設定にはひと手間掛かるイメージ。
Xserverでは管理画面からの設定が完了できれば、その後も自動で更新してくれますが、ドメインの管理方法や設定次第では、自動のSSL更新が出来ず、自分で更新時期に管理画面にログインして更新ボタンを押す必要があったりします。

XserverでのSSL設定

管理画面にログインしてから項目に沿ってクリックして進めば設定は完了ですが、一応おさらい。
以下の流れで設定完了なので、非常に楽。

htaccessの記述は設定したタイミングで必要なものが書き加えられるか、指定範囲は自動で上書きされる仕組みに。
このタイミングは人それぞれなので、間違ったタイミングで入れると、通常使う分には問題無いのですが、セキュリティ的には脆弱性に繋がるようです。

設定にある「CSR情報」について

CSR情報については、一般的なサイト制作では必要は無いと思ってます。
CSR情報にチェックを入れると、SSL証明書に住所や所属(会社名)も情報として登録する事になります。

ネームバリューがあるサイトや企業、SSLによる信頼性を必要とするサービスで無い場合は、チェックしなくても良いと思います。

WoerdpressのサイトにSSL設定とBasic認証を入れた例

# mod_rewrite設定
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# http→httpsへのリダイレクト
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Basic認証
AuthUserFile "/home/(Xserverアカウント)/(対称ドメイン)/htpasswd/.htpasswd"
AuthName "Member Site"
AuthType BASIC
require valid-user

上記の並びになっている場合は注意です。ブラウザで見るとこの様な流れ。

httpsとhttpの両方ともBasic認証へアクセスが出来てしまいます。間違って「http」でアクセスし、Bacis認証を入力すると暗号化されずIDPASSが流れる事になりますが、この設定の場合httpsでアクセスしてもhttpへの認証になってしまいます。

【コピペOK】これで解決!

# http→httpsへのリダイレクト
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# mod_rewrite設定
<IfModule mod_rewrite.c>
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# Basic認証
AuthUserFile "/home/(Xserverアカウント)/(対称ドメイン)/htpasswd/.htpasswd"
AuthName "Member Site"
AuthType BASIC
require valid-user

【コピペOK】その他、htaccessで追記した方が良い設定

今回の設定方法を調べていく中で見つけた設定です。セキュリティ対策として脆弱性チェック機関にも通用したので、是非参考にして欲しいです。

# wp-config.phpと.htaccessとerror_log、php.iniと.htpasswdをアクセス拒否
<FilesMatch "^.*(error_log|wp-config\.php|php.ini|\.[hH][tT][aApP].*)$">
Order deny,allow
Deny from all
</FilesMatch>

# wp-mail.phpとinstall.phpとxmlrpc.phpをアクセス拒否
<FilesMatch "^(wp-mail\.php|install\.php|xmlrpc\.php)">
Order allow,deny
Deny from all
</FilesMatch>

# wp-includesをアクセス拒否
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

# ディレクトリ一覧の非表示
Options -Indexes
# フォームから不正なscriptタグを入力しても実行処理しない
Options +FollowSymLinks
RewriteEngine On
# <script> タグ
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
# PHP グローバルに関連するもの
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
# _REQUEST を変更しようとするもの
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
#マッチしたURLへのアクセスを禁止("403 Forbidden"のレスポンスを返す)

最後に

単純にhttpsへの転送設定を先に持ってくれば良いだけですが、Xserverで自動記載を使うと、手動で変更しなければならない場合があり、慣れていないと触るにも少し抵抗があると思います。

htaccessの設定は、プログラマーであれば簡単な事かもしれませんが、ノンプログラマーには少しハードルがあると思いますので、同じ状況で困った場合、上記で試して見てください。

Special Thanks
下記の記事を参考、コードをそのまま、あるいは改造して使用させていただきました。

※リンクは張られていないものは、リンク先のサイトアドレスが変更もしくは見つからなくなったためです。

<ご注意>上記の紹介は、提供者や販売・運営者様及びその企業を差別や批判するものではありません。個人的な見解結果としての紹介となりますので、最終判断は皆さまご自身でお願いいたします。また、掲載内容は変更されていくのでこの記事記載日以降は内容が異なる場合もあります事ご了承ください。

  • URLをコピーしました!
目次