es 'mysql_real_escape_string' suficiente

3

Recientemente en stackoverflow he visto muchas discusiones en las que mysql_*_escape_string está en desuso y, en su lugar, recomienda PDO.
La forma en que lo he estado haciendo es permitir solo letras y ' en el campo name , permitiendo que todos los caracteres en el campo de la contraseña (pero luego lo pongan) y luego usando mysql_real_escape_string para escapar de los caracteres especiales. Así que leí sobre mysqli pero como veo que es lo mismo que mysql:

  

Escapa de una cadena de caracteres.

¿Cuáles son los problemas de seguridad al usar mysql_* y no mysqli o PDO ?

    
pregunta Mhmd 30.12.2013 - 12:59
fuente

1 respuesta

8

Si usa mysql_real_escape_string constantemente cada vez que inyecta contenido en un literal de cadena SQL, está bien, no hay ningún problema de seguridad.

Sin embargo, lo que el tiempo nos ha enseñado es que:

  • Es difícil capturar cada lugar que inyectas en un literal de cadena SQL. En el mundo real, los casos no escapados a veces se pasan por alto, incluso cuando el codificador original entiende el escape de SQL correctamente. O las inyecciones crudas se agregan más tarde en el mantenimiento. O se omite el escape cuando el codificador cree que no hay posibilidad de que haya caracteres especiales en la cadena, pero luego algo cambia y esa suposición ya no es cierta.

  • Despachar sus consultas con ...'.mysql_real_escape_string($value, $db).'... las hace tediosas y difíciles de leer.

  • La gente aún no entiende el problema de codificación con el que real se relaciona y, por lo tanto, no logra establecer el conjunto de caracteres de la manera correcta ( mysql_set_charset() , no está mal SET NAMES ).

Podemos pasar el resto del tiempo persiguiendo estos problemas en el código escrito con la extensión mysql , o simplemente empujar a todos para que utilicen consultas parametrizadas, que funcionan correctamente sin requerir un conocimiento profundo del procesamiento de cadenas.

    
respondido por el bobince 30.12.2013 - 14:36
fuente

Lea otras preguntas en las etiquetas