web-dev-qa-db-ja.com

ワードプレスの強化:htaccessでブロック/インクルード

このページ

http://codex.wordpress.org/Hardening_WordPress

インクルードディレクトリ内のファイルに対する要求をブロックするには、これを.htaccessファイルに含める必要があるとします。

# Block the include-only files.
<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>


# BEGIN WordPress
...

それはどのように機能しますか?私が読むことができる限り、( - を使用して)特定のURLを書き換えるためにしないを指定しただけで、他のすべての要求を実際に書き換えることはできません。足りないものはありますか?

1
commonpike

あなたが尋ねる:

それはどのように機能しますか?私が読むことができる限り、( - を使用して)特定のURLを書き換えないことを指定するだけです。

これらのファイルはWordPress PHPスクリプト内に含まれていますので、ブラウザでアクセスする必要はありませんが、しかし書き換えフラグに注意してください。

ApacheドキュメントFL、およびSフラグについての情報をいくつか示します。

[F]フラグを使用すると、サーバーは403 Forbiddenステータスコードをクライアントに返します。

[F]を使用すると、[L]が暗黙に含まれます。つまり、応答はすぐに返され、それ以上の規則は評価されません。

[S]フラグは、実行したくないルールをスキップするために使用されます。スキップフラグの構文は[S = N]です。ここで、Nはスキップするルールの数を表します(RewriteRuleが一致する場合)。これは書き換えルールセットのgotoステートメントと考えることができます。

あなたが尋ねる:

その後、他のすべての要求を実際に書き直すことはできません。

no、セキュリティの書き換えに一致しない他のすべてのHTTPリクエストは、# BEGIN WordPress部分に移動します。

それでは、これらのセキュリティ書き換え規則の影響を受けるファイルの数を調べてみましょう。

http://example.com/wp-admin/includes/*                 -  62 PHP files
http://example.com/wp-includes/*.php                   - 110 PHP files
http://example.com/wp-includes/theme-compat/*          -   5 PHP files
http://example.com/wp-includes/js/tinymce/langs/*.php  -   0 PHP files

私のWordPress 3.9.1インストールによると。

2
birgire