No mitigar vulnerabilidades, solucionarlos.
Si usted tiene una inyección de SQL, que se debe a su capa de acceso a la base de datos es incorrecto. Poner una estrategia de mitigación como filtrar los parámetros con palabras clave como 'SELECCIONAR' o '; DROP DATABASE 'es lo incorrecto. En cambio, cambie a un método de acceso a bases de datos que escapa automáticamente a los parámetros entrantes de la manera adecuada para la base de datos involucrada. A continuación, no solo soluciona el problema, sino que también se asegura de que la aplicación funcione correctamente cuando se enfrenta con un "O'Reilly" u otros datos problemáticos.
Si usted tiene una inyección HTML que lleva a XSS, su estrategia de plantillas que está animando a ciegas salida de texto sin escapar. No intente mitigar la situación detectando y rechazando '<' en los datos, omitirá algunos campos y no conocerá todos los casos especiales, sin mencionar que alguien podría tener una razón válida para ingresar un '<' '. En lugar de arreglarlo, cambie su sistema o estilo de plantillas para que siempre salga el texto siempre que salga de HTML, incluso si los datos "no pueden" contener caracteres especiales.
cuanto a lo que los problemas de seguridad que puede salir a ignorar, que depende de su negocio y la cantidad de clientes están confiando en él. Hay, en general, cuatro niveles de compromiso que afectaba a las aplicaciones web (que supongo que estás hablando como usted menciona inyección SQL y XSS):
-nivel de servidor compromiso. Por lo general, desde cuentas shell y FTP mal protegidas, pero también se intensificaron los compromisos a nivel de aplicación. Las aplicaciones que ejecutan el sistema() con datos proporcionados por el usuario a menudo se ponen en peligro tan mal, así como las inyecciones de SQL donde la base de datos es un servidor SQL mal configurado (usando xp_cmdshell). El atacante puede obtener acceso al shell en el servidor y felizmente puede enviar una gran cantidad de spam e intentos de piratería en otros servidores. Esto no es aceptable para ningún negocio.
Nivel de aplicación comprometido. Típicamente inyección SQL. El atacante puede leer o borrar cualquier información del cliente de la base de datos y de otra manera interferir con el funcionamiento de la aplicación.Esto es aceptable si se trata de una aplicación de juguete y sus clientes aceptarán la muerte de sus datos, o si el acceso a la aplicación está cerrado, solo estará disponible para las partes/clientes de confianza seleccionados.
Nivel de datos comprometido. Típicamente inyección de HTML a XSS. El atacante puede poner un iframe en su sitio apuntando a un exploit de seguridad del navegador poniendo malware en las máquinas de personas que miran la página con un software desactualizado. Esto es aceptable si no le importa un poco la seguridad de sus clientes o, de nuevo, si la aplicación está cerrada al acceso general.
Nivel de compromiso del usuario. Normalmente, formas de acción no verificadas que conducen a ataques de falsificación de solicitudes entre sitios. Aceptable si su aplicación no es de suficiente interés para los atacantes que se molesten en probar esto.
En general, la industria está por el momento cerca del nivel 3. Las aplicaciones que permiten ataques de nivel 1 ahora son raras; Los agujeros de nivel 2 son más comunes, pero son problemas que la mayoría de los autores conocen y saben que deben corregir. Los agujeros de nivel 3 son muy comunes y las tácticas para evitar todas las posibles inyecciones de HTML no son ampliamente seguidas. Hoy en día, los agujeros de nivel 4 afectan a la mayoría de las aplicaciones web.
Y luego está la caricatura clásica: http://xkcd.org/327/ que transforma una aplicación de solo selección en una de eliminación también. –
Bobby Tables es un ataque de inyección SQL estándar simple, que simplemente fallará si su cuenta de acceso a la base de datos no tiene derechos de eliminación, porque entonces el DBMS solo dirá "¡No!". La seguridad adecuada no es solo un código limitado, sino también derechos de usuario de servicio limitado, aunque es bastante complicado. –