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

¿Los campos seleccionados desplegables son vulnerables a cualquier tipo de inyección?

Cada elemento de un sitio web puede ser alterado por un usuario malicioso (campos ocultos, divs, estilos, llamadas ajax, lo que sea...).

Dicho esto, si ya está utilizando declaraciones preparadas, no debe preocuparse demasiado por la inyección de SQL porque mysql ya sabe qué declaraciones se ejecutarán.

En su lugar, debe desinfectar todo el resultado que se muestra en un sitio web.

Digamos que en tu formulario, estás preguntando en qué país vivo de esta manera:

 <select name="country">
     <option value="Mexico">Mexico</option>
     <option value="USA">USA</option>
     <option value="Canada">Canada</option>
 </select>

pero soy un usuario malicioso y uso el inspector de código de Chrome para modificar su HTML, y selecciono México, pero cambio su valor a

<script type="text/javascript">alert("Hello World");</script>

y si genera ese valor en otra página de esta manera:

 Your country is: <?=$country?>

Entonces estarás escribiendo:

 Your country is:
 <script type="text/javascript">alert("Hello World")</script>

y aparecerá un cuadro de alerta con el texto "Hello World"

¿Qué daño puedo hacer con que te preguntes...

bueno, puedo hacer lo que quiera con eso, puedo robar cookies o si ese valor es público (digamos que está mostrando ese valor en su página principal), entonces podría redirigir a sus usuarios a otro sitio web, cambiar el contenido de su sitio web... . lo que yo quiera.

Para desinfectar la salida de sus usuarios, puede usar

htmlentities

Eso convertirá, por ejemplo, el &lt; > símbolos a su respectivo código:&lt; y &gt