sql >> Base de Datos >  >> RDS >> Mysql

bind_param() solo es necesario en los valores ingresados ​​​​por el usuario o en todos?

Técnicamente, no está en riesgo si no prepara datos que no provienen de la entrada del usuario. Sin embargo, se recomienda encarecidamente hacerlo por un par de razones:

  1. Si olvida preparar los datos ingresados ​​por el usuario en algún lugar, existe la posibilidad de que este usuario haya inyectado algo misceláneo en una fila de datos que no esperaba que fuera alguna vez ingresado por el usuario.
  2. Es una buena práctica repetir lo que está haciendo para mantener su servidor seguro. Si comienza a mezclarlo, es mucho más probable que se olvide de preparar los datos donde realmente se necesita hacerlo.
  3. La preparación de sus datos no es solo para evitar la inyección SQL de los atacantes. También evitará algunos problemas con la base de datos en caso de que accidentalmente cree un error en su código. Por ejemplo:

En algún lugar de su código, tiene un sistema de registro que agrega un registro de errores a su base de datos. La cadena sería:


Esta cadena es generada por su secuencia de comandos. Por eso no lo preparas. Sin embargo, las comillas dentro de esta cadena provocarán errores en su base de datos que podrían haberse evitado si la hubiera preparado de todos modos.