Recientemente he sido frecuentado por mensajes de error erróneos de mod_security. Sus conjuntos de filtros cubren exploits PHP obsoletos, y tengo que reescribir mis cosas porque Wordpress & Co tenía errores hace años.
¿Ocurre esto a alguien más?
Apache mod_security bloquea solicitudes HTTP posiblemente peligrosas antes de que lleguen a las aplicaciones (específicamente PHP). Utiliza varios conjuntos de filtros, principalmente basados en expresiones regulares.
Así que tengo un buen proveedor de alojamiento compartido, técnicamente apto y demás. Pero esto me molestó:
La semana pasada tuve que cambiar el nombre de un parámetro &src=en una de mis aplicaciones porque mod_security bloquea CUALQUIER solicitud con eso. No busqué sus detalles, pero esta regla de filtro impedía la posibilidad de explotar otra aplicación que no uso y que probablemente nunca había escuchado. Aún así, tuve que volver a escribir mi código (cambiar el nombre del parámetro a menudo es suficiente para engañar a mod_security) que no tenía nada que ver ni tenía en común.
Y hoy, una tonta expresión regular bloquea los envíos de formularios, porque quería enviar un código de muestra php. Dado, este es el material simple contra el que mod_security está ahí para proteger. Pero no creo que mod_security pueda detectar código seriamente ofuscado, y simplemente se apaga en fragmentos de php obvios (y en este caso totalmente triviales).
Básicamente, mod_security me está penalizando porque otras personas lanzaron aplicaciones propensas a errores. (Sin decir que mis aplicaciones son ultra seguras, soy bastante cauteloso con respecto a la seguridad, pero no hago afirmaciones hiperbólicas).
Ya le he pedido a mi proveedor que lo desactive de todos modos, los beneficios son demasiado mínimos para mi IMO y para mis aplicaciones.
¿Qué piensas? ¿Mod_security tiene mucho sentido fuera del alojamiento WP? ¿O es realmente solo un montón de listas negras de errores de seguridad pasados? ¿Cuáles de sus reglas son realmente útiles? ¿Existe un nivel de aplicación equivalente?
<?php doBadStuff(); ?>no ejecutará esa función. (A menos que utilices,evalpor supuesto, que es malo de todos modos.)