web-dev-qa-db-fra.com

Comment puis-je désactiver mod_security dans le fichier .htaccess?

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.

33
Gaurav Agrawal

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>
44
Xyon

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>
6
Simon East

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

5
dhaupin

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>
2
manuel-84

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

1
OpenWebWar

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.

1
Alex

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.

0
Vadim Cool