Apacheサーバーでmod_security
ファイルを使用して.htaccess
を無効にするにはどうすればよいですか?
私の個人ドメインでWordPress=を使用しており、コンテンツにコードブロックがあり、ホスティングプロバイダーによると、mod_security
でエラーが発生し、IPがmod_security
によりファイアウォールに入りました。
そこで、mod_security
ファイルを使用して.htaccess
を無効にします。
これを行うことは可能ですが、ほとんどの場合、ホストはmod_security
理由がある。自分のサイトでそれを無効にすることを彼らが承認することを確認してください。
とはいえ、これでうまくいくはずです。
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
someサーバーおよびWebホストでは、.htaccess
を介してModSecurityを無効にすることができますが、完全にのみです。個々のルールを無効にすることはできません。
サイト全体で無効にするのではなく、特定のURLに制限することをお勧めします。以下の<If>
ステートメントで正規表現を使用して、一致するURLを指定できます...
### DISABLE mod_security firewall
### Some rules are currently too strict and are blocking legitimate users
### We only disable it for URLs that contain the regex below
### The regex below should be placed between "m#" and "#"
### (this syntax is required when the string contains forward slashes)
<IfModule mod_security.c>
<If "%{REQUEST_URI} =~ m#/admin/#">
SecFilterEngine Off
SecFilterScanPOST Off
</If>
</IfModule>
Mod_security 2.7.0+のこの質問を更新するために、--enable-htaccess-config
フラグを付けてコンパイルしない限り、htaccess経由でmodsecを緩和する機能をオフにしました。ほとんどのホストは、このコンパイラオプションを使用しません。これは、セキュリティが緩すぎるためです。代わりに、httpd.confのvhostsがmodsecを制御するための重要なオプションです。
Htaccessを緩和してmodsecをコンパイルしても、使用可能なディレクティブは少なくなります。たとえば、SecRuleEngine
は使用できません。許可されている場合、htaccessでデフォルトで使用できるリストを次に示します(ホストがAllowOverride
でこのリストをさらに制限する場合があることに注意してください)。
- SecAction
- SecRule
- SecRuleRemoveByMsg
- SecRuleRemoveByTag
- SecRuleRemoveById
- SecRuleUpdateActionById
- SecRuleUpdateTargetById
- SecRuleUpdateTargetByTag
- SecRuleUpdateTargetByMsg
2.xユーザーへの追加の注意:IfModule
は、古いmod_security2.c
ではなくmod_security.c
を探す必要があります。
上記の解決策が機能しない場合、これを試してください:
<IfModule mod_security.c>
SecRuleEngine Off
SecFilterInheritance Off
SecFilterEngine Off
SecFilterScanPOST Off
SecRuleRemoveById 300015 3000016 3000017
</IfModule>
サイトのルートディレクトリにある.htaccessファイルで、次の行を編集します。
<ifmodule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</ifmodule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
SecFilterEngineのようなmod_securityルールとパーツを互いに離しておくだけです。 Apacheサーバーでの動作
NameCheapを含む一部のWebホストでは、.htaccess
を使用してModSecurityを無効にすることはできません。唯一のオプションは、テクニカルサポートに連絡し、構成を変更するよう依頼することです。
共有ホスティング上のコンテンツを表示するために、単にエラーページをバイパスしようとしている人向け。 .htaccessファイルでリダイレクトを使用してみてください。それが406エラーである場合、UnoEuroでは、単にセキュリティを無効にしただけでは機能しないようでした。だから私は代わりにこれを使用しました:
ErrorDocument 406 /
その後、PHPを使用していつでもエラーステータスを変更できます。しかし、私の場合、そうすることは、WAFをバイパスしているため、SQLインジェクションへの扉を開くことになります。そのため、独自のセキュリティ対策を講じるか、できるだけ早くセキュリティを再度有効にする必要があります。