¿Cómo podemos desactivar mod_security
utilizando el archivo .htaccess
en el servidor Apache?
Estoy usando WordPress en mi dominio personal y publicar un post cuyo contenido tiene algún bloque de código y según mi proveedor de hosting dijo mod_security
da un error y mi IP ha ido en firewall debido a mod_security
.
Así que quiero desactivar mod_security
mediante el uso de .htaccess
archivo.
Es posible hacerlo, pero lo más probable es que su host haya implementado mod_security
por alguna razón. Asegúrese de que aprueban su desactivación para su propio sitio.
Dicho esto, esto debería hacerlo;
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
Sólo para actualizar esta pregunta para mod_security 2.7.0+ - desactivaron la capacidad de mitigar modsec vía htaccess a menos que lo compile con la bandera --enable-htaccess-config
. La mayoría de los hosts no utilizan esta opción del compilador, ya que permite una seguridad demasiado laxa. En su lugar, vhosts en httpd.conf es su opción para controlar modsec.
Incluso si compila modsec con mitigación htaccess, hay menos directivas disponibles. Por ejemplo, ya no se puede utilizar SecRuleEngine
. Aquí hay una lista que está disponible para su uso por defecto en htaccess si se permite (tenga en cuenta que un host puede limitar aún más esta lista con AllowOverride
):
- SecAction
- SecRule
- SecRuleRemoveByMsg
- SecRuleRemoveByTag
- SecRuleRemoveById
- SecRuleUpdateActionById
- SecRuleUpdateTargetById
- SecRuleUpdateTargetByTag
- SecRuleUpdateTargetByMsg
Más información en la wiki oficial de modsec
Como nota adicional para los usuarios de la versión 2.x: el IfModule
debe buscar ahora mod_security2.c
en lugar del antiguo mod_security.c
.
Si la solución anterior no funciona, pruebe esto:
<IfModule mod_security.c>
SecRuleEngine Off
SecFilterInheritance Off
SecFilterEngine Off
SecFilterScanPOST Off
SecRuleRemoveById 300015 3000016 3000017
</IfModule>