Evitar Inyeccion en MySQL

Iniciado por ZharkD, 13 Mayo 2010, 21:12 PM

0 Miembros y 1 Visitante están viendo este tema.

ZharkD

Cita de: Alex@ShellRoot en 14 Mayo 2010, 04:49 AM
xD, la verdad, no entendí un fuck!  :rolleyes:
Waaaa, tratare de hacerlo en algoritmo:

* Cargar Web y contenido
- Proporcioar formulario.
- SI, el formulario se ha enviado
- - Revisar variables enviadas (con $_POST) con funciones stripslashes(), mysql_real_escape_string().
- - SI, pasa la validacion (aqui esta garantizado que ya NO pasan las inyecciones)
- - - Generar la consulta en la base de datos.
- - SI NO
- - - Regresar error en el formulario para que el visitante corrija el texto enviado.

Shell Root

Bueno, creo que así es la cosa. Por ejemplo:

Codigo:
Código (php) [Seleccionar]
<html>
<head><title>PoC</title></head>
<body>
<form action='index.php' method='POST'>
<input type="text" name="txtPoC" ><br>
<input type="submit" name="btnEnviar" value="Enviar" type="submit">
</form>
<?PHP
echo htmlspecialchars($_POST['txtPoC'], ENT_QUOTES);
?>
</body>
</html>

Resultado:
&lt;script&gt;alert(/XSS/)&lt;/script&gt;
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

BHK

la mejor prevención ya te la dieron

https://foro.elhacker.net/php/evitar_inyeccion_en_mysql-t293510.0.html;msg1453264#msg1453264

en ese enlace está tooooooodo lo que necesitas para prevenir inyeccion sql y xss.

ZharkD

Cita de: BHK en 14 Mayo 2010, 06:33 AM
la mejor prevención ya te la dieron

https://foro.elhacker.net/php/evitar_inyeccion_en_mysql-t293510.0.html;msg1453264#msg1453264

en ese enlace está tooooooodo lo que necesitas para prevenir inyeccion sql y xss.
Si,

Efectivamente ya lo lei y si es lo mejor, sin embargo me gustaria saber si mi deduccion es la correcta, ya que me gustaria saber COMO funcionan las cosas no simplemente como prevenirlas si no entiendo su funcionamiento al 100%.
Cita de: ZharkD en 14 Mayo 2010, 04:46 AM
Aver si entiendo bien,

Me pase a leer algunos manuales en linea para comprender mejor los links que me dejaron arriba y esta es mi deduccion, por favor corrijanme si estoy mal:
"Una inyeccion se puede prevenir si se realiza la validacion DESPUES del $_POST pero ANTES de realizar mis consultas en las bases de datos."
A mayores palabras, un ejemplo:
Digamos que yo tengo un campo de texto (como dueño, script). Entonces proporciono ese campo a un visitante, el cual curiosamente ingresa " '); mysql_query(....); " entonces presiona enviar. Hasta ahora solo se ha asignado el valor de " '); mysql_query(....); " a la variable $_POST['ejemplo'] como contenido "textual" unicamente. Ahora bien, apra evitar que se genere la consulta que el visitante realizo, debo validar esa variable con algunas funciones como stripslashes(), mysql_real_escape_string() y otras mas. Se procede con una condicion, la cual establecera si la variable enviada es valida, en caso que lo sea generara mi consulta (mi script), en caso contrario, regresara un error en la webform y de esta manera evitara la inyeccion.

En resumen, una inyeccion NO procede hasta que el mismo script propio del dueño le da acceso tras generar una consulta del script, dando paso de esta manera a que la variable que solo era texto, se convierta en una instruccion para afectarnos.

Es correcta mi deduccion?