Comment pouvons-nous désactiver mod_security
en utilisant .htaccess
fichier sur le serveur Apache?
J'utilise WordPress sur mon domaine personnel et publie un article dont le contenu contient du code bloqué et selon mon fournisseur d'hébergement, dit mod_security
donne une erreur et mon IP est entré dans le pare-feu à cause de mod_security
.
Donc, je veux désactiver mod_security
en utilisant .htaccess
fichier.
C'est possible, mais votre hôte a probablement implémenté mod_security
pour une raison. Assurez-vous qu'ils approuvent votre désactivation pour votre propre site.
Cela dit, cela devrait le faire;
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
Sur certains serveurs et hôtes Web, il est possible de désactiver ModSecurity via .htaccess
, mais uniquement dans son intégralité - vous ne pouvez pas désactiver des règles individuelles.
Plutôt que de le désactiver pour l'ensemble de votre site, il est préférable de le limiter à des URL spécifiques. Vous pouvez spécifier les URL à associer via la regex dans le <If>
déclaration ci-dessous ...
### 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>
Juste pour mettre à jour cette question pour mod_security 2.7.0+ - ils ont désactivé la possibilité d’atténuer modsec via htaccess à moins que vous ne le compiliez avec le --enable-htaccess-config
drapeau. La plupart des hôtes n'utilisent pas cette option du compilateur car elle autorise une sécurité trop laxiste. Au lieu de cela, vhosts dans httpd.conf est votre choix pour contrôler modsec.
Même si vous compilez modsec avec atténuation htaccess, il y a moins de directives disponibles. SecRuleEngine
ne peut plus être utilisé ici par exemple. Voici une liste qui peut être utilisée par défaut dans htaccess si elle est autorisée (gardez à l'esprit qu'un hôte peut limiter davantage cette liste avec AllowOverride
):
- SecAction
- SecRule
- SecRuleRemoveByMsg
- SecRuleRemoveByTag
- SecRuleRemoveById
- SecRuleUpdateActionById
- SecRuleUpdateTargetById
- SecRuleUpdateTargetByTag
- SecRuleUpdateTargetByMsg
Plus d'infos sur le wiki officiel de modsec
Remarque supplémentaire pour les utilisateurs 2.x: le IfModule
devrait maintenant rechercher mod_security2.c
au lieu de l'ancien mod_security.c
Lorsque la solution ci-dessus ne fonctionne pas, essayez ceci:
<IfModule mod_security.c>
SecRuleEngine Off
SecFilterInheritance Off
SecFilterEngine Off
SecFilterScanPOST Off
SecRuleRemoveById 300015 3000016 3000017
</IfModule>
Dans le fichier .htaccess du répertoire racine du site, éditez la ligne suivante:
<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>
Il suffit de garder les règles mod_security telles que SecFilterEngine et les parties les unes des autres. Cela fonctionne pour le serveur Apache
Avec certains hôtes Web, y compris NameCheap, il n'est pas possible de désactiver ModSecurity à l'aide de .htaccess
. La seule option est de contacter le support technique et de leur demander de modifier la configuration pour vous.
Pour tous ceux qui cherchent simplement à contourner la page ERROR pour afficher le contenu sur l'hébergement partagé. Vous voudrez peut-être essayer d'utiliser la redirection dans le fichier .htaccess. S'il s'agit d'une erreur 406, sous UnoEuro, cela ne semblait pas fonctionner, mais simplement désactiver la sécurité. Alors j'ai utilisé ceci à la place:
ErrorDocument 406 /
Ensuite, vous pouvez toujours changer le statut d'erreur en utilisant PHP. Mais sachez que, dans mon cas, cela signifie que j’ouvre la porte aux injections SQL car je contourne WAF. Vous devrez donc vous assurer que vous avez soit vos propres mesures de sécurité, soit que vous réactivez la sécurité dès que possible.