¿Es un problema de seguridad si MySQL manipula los tipos de parámetros?

2

Este es un seguimiento de una pregunta que publiqué en Stack Overflow pero no es necesario que la lea. - Estoy recapitulando los detalles pertinentes aquí.

Estoy probando una aplicación PHP que usa una base de datos MySQL como un almacén de datos. Estoy utilizando consultas parametrizadas exclusivamente, a través de una biblioteca ORM.

Descubrí que una solicitud POST en particular con una carga útil como esta:

id=3-2&value=whatever

modificará la fila de la base de datos donde id = 3 . Después de algunas investigaciones, se determinó que el valor "3-2" se pasa a la base de datos (a través de una consulta parametrizada) y selecciona la fila donde id = 3 , que luego se actualiza.

Ahora me parece que este es un defecto de seguridad: puedo manipular los datos en mi base de datos colocando un valor arbitrario para el parámetro id . Es cierto que el rango de valores para los cuales es posible este tipo de ataque es limitado: el parámetro de ID debe ser una cadena con un número de prefijo, y ese número debe corresponder a una ID en mi base de datos.

Tengo dos preguntas:

  1. ¿Es esto realmente un error de seguridad que debería preocuparme?

  2. ¿A qué nivel debería abordarse esto en mi solicitud?

    1. ¿El servidor MySQL, tal vez cambiando algunos valores de configuración?
    2. ¿La biblioteca de ORM, tal vez verificando el valor de la ID utilizada antes de intentar consultar la base de datos?
    3. En mi código, ¿incluso antes de intentar crear una instancia del modelo?

¡Gracias por tu ayuda! Estoy empezando a aprender sobre seguridad y amp; cualquier entrada será útil!

    
pregunta Kryten 06.05.2015 - 00:05
fuente

1 respuesta

0
  1. Esto permite acciones (potencialmente maliciosas) que son contrarias al uso previsto de la aplicación, por lo que sí, es una falla de seguridad que debería preocuparle. El hecho de que haya encontrado casos de uso / vectores de ataque limitados no significa que no existan otros.
  2. Lo ideal es que adoptes un enfoque de " defensa en profundidad " por el que mitigas la preocupación en tantos Niveles como sea practicable. Como se mencionó anteriormente, solo ha descubierto un único vector de ataque, y la mitigación en todos los niveles requiere que cualquier vector relacionado tenga que pasar por alto las mitigaciones de todas en lugar de las de una sola capa. Habiendo dicho eso; puede que no sea apropiado modificar la biblioteca ORM, ya que no es necesariamente un problema generalizable.
respondido por el Arran Schlosberg 06.05.2015 - 03:47
fuente

Lea otras preguntas en las etiquetas