Pregunta

Me dijeron en una pregunta previa que mi consulta es propensa a Inyecciones SQL.

get_stats = mysql_query("SELECT * 
                               FROM visitors 
                              WHERE site='

Me dijeron en una pregunta previa que mi consulta es propensa a Inyecciones SQL.

<*>

¿Cuál sería la forma más fácil de abordar este problema? ¿Y tiene alguna lectura adicional sobre el tema de las inyecciones? (Algo que podría extrañar en Google). Gracias!

GET[site]' AND date BETWEEN '$start_date' AND '$end_date' ");

¿Cuál sería la forma más fácil de abordar este problema? ¿Y tiene alguna lectura adicional sobre el tema de las inyecciones? (Algo que podría extrañar en Google). Gracias!

¿Fue útil?

Solución

Utilice Declaraciones preparadas .

En la mayoría de los casos, las declaraciones preparadas hacen el trabajo de combinar su consulta con sus parámetros, de manera segura.

Otros consejos

$ _GET ['sitio'] es un valor que proviene directamente de la URL en el navegador, lo que significa que un usuario podría cambiar fácilmente este valor a lo que quiera, debe verificar / desinfectar ese valor, todos los valores en realidad antes de enviarlo a una base de datos.

Algo como esto sería un comienzo, aún podría usar más trabajo y hay muchas formas de hacerlo, crearía una función / clase personalizada para pasar fácilmente todas las variables a través del sitio, lo que simplemente puede hacer cosas repetitivas como esta

$site = mysql_real_escape_string(

$ _GET ['sitio'] es un valor que proviene directamente de la URL en el navegador, lo que significa que un usuario podría cambiar fácilmente este valor a lo que quiera, debe verificar / desinfectar ese valor, todos los valores en realidad antes de enviarlo a una base de datos.

Algo como esto sería un comienzo, aún podría usar más trabajo y hay muchas formas de hacerlo, crearía una función / clase personalizada para pasar fácilmente todas las variables a través del sitio, lo que simplemente puede hacer cosas repetitivas como esta <*>GET['site']); $start_date = mysql_real_escape_string($start_date); $end_date = mysql_real_escape_string($end_date); get_stats = mysql_query("SELECT * FROM visitors WHERE site='$site' AND date >= '$start_date' AND date <= '$end_date' ");

mysql_real_escape_string es el más básico y la forma más fácil de seguridad aquí.

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