Pregunta

¿Qué formas hay para detectar vulnerabilidades en aplicaciones web PHP / MySQL (la comprobación de ciertos caracteres o trozos de códigos en el GET, POST, matrices de la galleta / del uso de una biblioteca con una base de datos que cuenta con todas las pautas de exploits comunes, si existe alguno?) y cómo debo proceder cuando se detecta uno?

Por ejemplo, si alguien trató de encontrar una inyección SQL en mi PHP aplicación web / MySQL utilizando el método de la petición GET, debo guardar la acción realizada por el usuario en la base de datos, tener la aplicación me envía un correo electrónico, IP prohibir al usuario y le muestra / ella un mensaje "lo sentimos, pero hemos detectado una acción dañina de su cuenta que será revisado. su cuenta ha sido desactivada y ciertas características puede ser desactivada desde su dirección IP. Si esto es un error , por favor envíenos un correo electrónico con todos los detalles ".

Gracias.

¿Fue útil?

Solución

Tres cosas vienen a la mente:

  1. codificación defensiva, esterilice toda la entrada, preparar instrucciones SQL y utilizar Suhosin
  2. aumentar la seguridad de su sitio mediante la ruptura en ella con un href="http://sectools.org/web-scanners.html" rel="nofollow noreferrer"> escáner de vulnerabilidades
  3. registro de la piratería attemtps con un sistema de detección de intrusiones

Si usted se siente un hecho y derecho IDS es demasiado, prueba a PHP IDS , como lo hace bastante más de lo están pidiendo fuera de la caja. Tenga en cuenta que la detección de intrusiones a nivel de PHP ya sea demasiado tarde, aunque para evitar un ataque.

En el caso de una intrusión exitosa, creo que la mejor opción es tomar el servidor fuera de línea y ver lo que el daño que se hizo. Puede que tenga que considerar contratar a alguien para hacer un análisis forense de la máquina en caso de tener que reunir las pruebas legalmente utilizable.

Si usted siente que necesita para reaccionar a los intentos de intrusión sin éxito y tienes IP del usuario malicioso, averiguar el ISP y le informará con la mayor cantidad de detalles del intento de intrusión posible. La mayoría de los proveedores de Internet tienen un contacto abuso de estos casos.

Otros consejos

Su pregunta es doble y voy a responder a la segunda parte.

Log todo, pero no prohibir o mostrar ningún mensaje. Será embarazosa en caso de un falso positivo. Como regla general, tratar de construir una aplicación que puede hacer frente a cualquier tipo de entrada del usuario sin ningún problema.

sólo tiene que utilizar strip_tags () en todos los $ _REQUEST y $ _COOKIE VARs para cuidar de código a aparecer en estos VARs, como para SQL que tendría que escribir tal vez hasta una expresión regular consulta similar o algo así, pero esto no debería ser una problema ya que siempre se debe mysql_real_escape_string ($ str) todas las variables en sus consultas. intentar algo como esto, sin embargo.

function look_for_code_and_mail_admin($str) {
    $allowed_tags = "<a>,<br>,<p>";
    if($str != strip_tags($str, $allowed_tags)) {
        $send_email_to = "some@bodys.email";
        $subject = "some subject";
        $body = "email body";
        mail($send_email_to,$subject,$body);   
    }
    return($str);
}

Um, no puedo recordar la última vez que he visto un sitio que intenta iniciar sesión ataques de inyección SQL que yo no era capaz de penetrar ..

Usted no necesita preocuparse por el tiempo que alguien está atacando el sitio, ya que es en el mejor subjetiva como para resistir un ataque algo es o no. ¿Y si la base 64 sitio codifica algunos valores y los decodifica antes de que lo usa? IDS es no que va a coger. ¿Qué pasa si un usuario quiere publicar un fragmento de código, que se detecta como una hazaña, ya que contiene SQL? Esta es una pérdida de tiempo ... Si realmente necesita saber si alguien te está atacando, sólo tiene que instalar algunos IDS en un máquina separada con acceso de sólo lectura al tráfico entrante .. digo máquina independiente, debido a que muchos de IDS son vulnerables a sí mismos, y sólo empeorará la situación.

Usar metodologías de programación segura estándar, utilizar consultas SQL paramaterized o un ORM.

Parece demasiado trabajo con el bit de correo electrónico y todo para mí. Aparte de eso, me gusta correr en sitios que suelen utilizar y tratar de encontrar puntos inyectables para que pueda avisar al administrador de ello. ¿Le IP mí prohibir por eso?

Sugiero caza a las partes aprovechables mismo y desinfección en caso necesario. Acunetix tiene un programa muy bueno para eso. Si no tiene ganas de desembolsar el precio gigante para Acunetix, hay algunos muy buenos complementos para Firefox llamado XSS y SQL mí me inyectan es posible que desee considerar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top