Ver Mensaje Individual
  #16 (permalink)  
Antiguo 31/08/2013, 18:37
Avatar de pateketrueke
pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Seguridad en una consulta php mysql

Cita:
Iniciado por omdsetenta Ver Mensaje
Le añades barras invertidas al valor de la variable que buscas en la base de datos, no entiendo como esto puede impedir un ataque, el agregado de las barras invertidas es aleatorio o tiene un patrón? Gracias
Es un patrón, te explico:

Vamos a suponer que sabes algo de programación básica, sólo para explicarlo mejor, ¿sabes qué es un carácter especial?

Bien, en PHP un ejemplo de esto es el símbolo $ (dollar) que identifica a las variables en general, ahora, como ejemplo vamos a decir que necesitamos imprimir dicho carácter.

Código PHP:
// MAL
echo "$";

// BIEN
echo "\$";
echo 
'$'
¿Has notado la barra invertida?

Dicha barra indica que el siguiente carácter debe ser escapado, sencillamente para evitar su comportamiento habitual.

Bueno, pues en base de datos es exactamente lo mismo, en el lenguaje de SQL también hay caracteres especiales y debes tener cuidado cuando los utilizas.

En una consulta "a mano" es casi imposible que te hagas SQL-Injection tu mismo, ¿verdad? (uno nunca sabe )

Código PHP:
 $consulta_calorias_restantes=mysql_query("SELECT calorias_restantes FROM usuarios ORDER BY calorias_restantes ASC LIMIT 1",$Conexion); 
Ahí tu consulta no hace uso de ninguna variable proveniente del usuario, por lo tanto dicha cadena es segura sólo por el hecho de no es alterada con programación.

Código PHP:
 $consulta_calorias_restantes=mysql_query("SELECT calorias_restantes FROM usuarios ORDER BY $algun_orden ASC LIMIT 1",$Conexion); 
En este otro ejemplo ya se utiliza la variable $algun_orden que debería tener el nombre de la columna a ordenar, de tal manera que se pueda definir dinámicamente, inclusive desde la URL así: script.php?sort=tal_columna

Código PHP:
$algun_orden $_GET['sort']; 
¿Todo bien hasta ahí?

¿Qué podría hacer insegura dicha consulta?

Aquí hay una muy buena explicación: http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL

Cita:
Iniciado por omdsetenta Ver Mensaje
El 95% de las respuestas que necesitaba no me fueron dadas. Asi que igualmente agradezco. Al menos podrían haber explicado un poco mas, pero bueno, a otros les pasan los scripts completos y a mi se me niegan las mas simples de las explicaciones. Gracias de todos modos.
No te confundas, tu problema no es objetivo, es teórico y se puede resolver estudiando y leyendo.

¿O cómo crees que aprendimos algunos?

¿Haciendo preguntas en los foros?

¿Cuando no había foros?

No, hoy la tienes fácil para aprender todo lo que quieras, en Internet está todo bien documentado.

Si tuvieras un problema en concreto te prestaríamos ayuda, pero no somos educadores así que no esperes más.

Cuando entiendas exactamente de qué te quieres proteger podemos seguir conversando, mientras eso no suceda no sirve continuar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.