1

WordPress 内に phpbb3 をラップした Web サイトがあります。このセキュリティ推奨事項を .htaccess に追加したときは、かなりうまく機能します。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC]
RewriteRule ^(.*)$ - [F,L]
RewriteCond %{QUERY_STRING} \.\.\/ [NC,OR]
RewriteCond %{QUERY_STRING} boot\.ini [NC,OR]
RewriteCond %{QUERY_STRING} tag\= [NC,OR]
RewriteCond %{QUERY_STRING} ftp\:  [NC,OR]
RewriteCond %{QUERY_STRING} http\:  [NC,OR]
RewriteCond %{QUERY_STRING} https\:  [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [NC,OR]
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>|ê|"|;|\?|\*|=$).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(&#x22;|&#x27;|&#x3C;|&#x3E;|&#x5C;|&#x7B;|&#x7C;).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127\.0).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(request|select|insert|union|declare).* [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^(.*)$ - [F,L]
</IfModule>

ユーザーが一部のフォーラム ページで検索フォームを使用しようとすると、403 エラーが発生します。これは、検索の表示方法です (例として)。

<div class="search-box">
<form method="post" id="forum-search" action="./search.php?fid[]=5">
<fieldset>
<input class="inputbox search tiny" type="text" name="keywords" id="search_keywords" size="20" value="Search this forum…" onclick="if (this.value == 'Search this forum…') this.value = '';" onblur="if (this.value == '') this.value = 'Search this forum…';" />
<input class="button2" type="submit" value="Search" />
<input type="hidden" value="5" name="fid[]" />
</fieldset>
</form>
</div>

「禁止」として返されます。.htaccess のそのセクションを取り出すと、正常に動作します。私は .htaccess に関する非常に基本的なことを知っていますが、そのコードが HTML/PHP のそのセクションで 403 を引き起こしている理由を理解できません。

任意のアイデアをいただければ幸いです...ありがとう...

4

1 に答える 1

0

htaccessで403を返しているため、403が発生していFます。書き換えルールのフラグがこれになっています。

あなたがこれをやりたいと思う理由がおそらくあります。最初のルールは、HEAD、TRACE、DELETE、および TRACK メソッドによるリクエストをブロックします。2 番目のルールは、可能性のある一連のクエリ文字列を含むリクエストをブロックし、* wordpress_logged_in Cookieが見つからない場合*にブロックします。したがって、 wordpress_logged_in_という名前の Cookie がない場合は、403 が返されます。

于 2012-09-22T16:38:38.160 に答える