安全性を高めたい、セキュリティを強化したいですの!そこで、今回 .htaccess ファイルに改善の余地ありということに気が付きましたので実践いたします♪
WordPress の .htaccess の追加部分ポイント
次を冒頭に追加しました。
<FilesMatch "^(wp-config\.php|wp-mail\.php|install\.php)"> Order Allow,Deny Deny from all </FilesMatch>
FilesMatch 部分の “^(wp-config\.php|wp-mail\.php|install\.php)” を整理します。
- ^ 行頭を意味します。
- () 囲った範囲をグループ化します。
- \ エスケープ文字を意味します。
- | 区切られた前後の正規表現のいずれかに一致します。
以上により、http://example.com の後に「wp-config.php」「install.php」「wp-mail.php」「.ht」がつく URL へのアクセスを拒否します。
なお、「install.php」は WordPress インストール後に削除する!という情報を見たことがございますが、WordPress をアップデートしますとこの install.php のタイムスタンプが更新されておりました。
つまり、「install.php」を削除しても WordPress アップデートで復活する、のではないかしら?
未検証ですけれども、可能性は高いように思います。ですので「install.php」を削除し続けるのではなく、存在することを前提にアクセスを拒否したいと考えました。
また「wp-config.php」も同様です。こちらは公開ディレクトリ外に移動できるそうですけれども、えへへ、面倒ですの、てへ。まだまだ甘ちゃんですの。
ウェブブラウザでアクセスした時、今までのレスポンス
- http://example.com/wp-config.php にアクセスすると真っ白な画面が表示された
- http://example.com/wp-admin/install.php にアクセスすると「すでにインストールされています」とエラーが表示された
- http://example.com/wp-mail.php にアクセスすると POP3 connect: Error [110] [Connection timed out] とエラーが表示された
- http://example.com/.htaccess にアクセスすると Forbidden You don’t have permission to access /.htaccess on this server. とエラーが表示された
wp-config.php は真っ白なページが表示されましたので、一見するとアクセスできていない!セキュリティ的に OK!と思いたくなります。
ですけれども、wp-config.php にアクセスしてその中の処理を行って、その結果真っ白な画面が表示されておりますので、アクセス拒否はできておりません><。
install.php も wp-mail.php も同様ですね♪
ウェブブラウザでアクセスした時、変更してからのレスポンス
- http://example.com/wp-config.php にアクセスすると Forbidden エラーが表示された
- http://example.com/wp-admin/install.php にアクセスすると Forbidden エラーが表示された
- http://example.com/wp-mail.php にアクセスすると Forbidden エラーが表示された
- http://example.com/.htaccess にアクセスすると Forbidden エラーが表示された
無事にすべての場所へのアクセスを制限することができましたわね♪
修正ソースの全体像♪
変更前はこうでしたの。
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
それに手を加えまして、変更後はこう。
<FilesMatch "^(wp-config\.php|wp-mail\.php|install\.php)"> Order Allow,Deny Deny from all </FilesMatch> # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
おわりに
参考にさせていただいたページです。ありがとう存じます♪
- WordPressサイト用の.htaccess例 | dogmap.jp
- 正規表現の入門(1) 基礎的なメタ文字 (1/4):CodeZine
- core – Apache HTTP サーバ
- mod_access – Apache HTTP サーバ
以上です。
「【セキュリティ向上】WordPress の .htaccess に追加して安全性を高めます!」への1件の返信
こんにちは。
htaccessにこれを入れてみました。
ありがとうございます。