Foros del Web » Programando para Internet » PHP »

SQL Injection Ayuda

Estas en el tema de SQL Injection Ayuda en el foro de PHP en Foros del Web. ¿Que es preferible utilizar? @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $resultado = $conectar -> prepare ( "SELECT user FROM user WHERE user = :username AND ...
  #1 (permalink)  
Antiguo 10/09/2013, 15:17
 
Fecha de Ingreso: septiembre-2013
Mensajes: 125
Antigüedad: 11 años, 2 meses
Puntos: 3
SQL Injection Ayuda

¿Que es preferible utilizar?

Código PHP:
Ver original
  1. $resultado = $conectar->prepare("SELECT user FROM user WHERE user = :username AND pass :password");
  2. $resultado->execute(array(':username' => $_POST['username'], ':password' => $_POST['password']));

Código PHP:
Ver original
  1. $conectar->prepare("SELECT user FROM user WHERE user = ".$conectar->quote($username)." AND pass = ".$conectar->quote($password)."");

Muchas gracias
  #2 (permalink)  
Antiguo 10/09/2013, 15:21
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: SQL Injection Ayud

QUOTE

Cita:
Si se usa esta función para construir sentencias SQL, se recomienda encarecidamente usar PDO::prepare() para preparar sentencias SQL con los parámetros vinculados en vez de usar PDO::quote() para interpolar entradas del usuario en una consulta SQL. Las sentencias preparadas con parámetros vinculados no son sólo más portables, más convenientes, e inmunes a inyecciones SQL, sino que son mucho más rápidas de ejecutar que las consultas interpoladas, ya que tanto el lado del servidor como el del cliente pueden almacenar en caché una forma compilada de la consulta.
http://www.php.net/manual/es/pdo.quote.php

http://www.php.net/manual/es/pdo.pre...statements.php
  #3 (permalink)  
Antiguo 10/09/2013, 15:23
 
Fecha de Ingreso: septiembre-2013
Mensajes: 125
Antigüedad: 11 años, 2 meses
Puntos: 3
Respuesta: SQL Injection Ayuda

Claro, eso para prepare() pero si utilizo query() ya no puedo utilizar $resultado->execute(array(':username' => $_POST['username'], ':password' => $_POST['password']));

Gracias por tu ayuda, ya lo lei, pero mi duda es mas esta que la otra.
  #4 (permalink)  
Antiguo 10/09/2013, 15:24
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: SQL Injection Ayuda

me parece que no leiste bien , tu duda es SQL Injection Ayuda en la cita puedes leer
Cita:
Las sentencias preparadas con parámetros vinculados no son sólo más portables, más convenientes, e inmunes a inyecciones SQL
ya lo leiste en serio los manuales ? por que en la pagina de PDO:QUOTES dice:

Cita:
PDO::quote() entrecomilla el string de entrada (si fuera necesario) y escapa los caracteres especiales contenidos en dicho string, usando un estilo de entrecomillado apropiado para el controlador subyacente.

Si se usa esta función para construir sentencias SQL, se recomienda encarecidamente usar PDO::prepare() para preparar sentencias SQL con los parámetros vinculados en vez de usar PDO::quote() para interpolar entradas del usuario en una consulta SQL.
Te quedo claro?,creo que la ultima cita resuleve tu duda de que es preferible utilizar ¿verdad?

Última edición por webankenovi; 10/09/2013 a las 15:32
  #5 (permalink)  
Antiguo 10/09/2013, 15:32
 
Fecha de Ingreso: septiembre-2013
Mensajes: 125
Antigüedad: 11 años, 2 meses
Puntos: 3
Respuesta: SQL Injection Ayuda

Sisi, pero yo digo si utilizo query() en vez de prepare() utilizaria quote()?
  #6 (permalink)  
Antiguo 10/09/2013, 15:33
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: SQL Injection Ayuda

si , si fuera necesario tal como se dice ya que no las estas preparando , pero vamos queda claro que php recomienda encarecidamente que antes de hacer tal cosa , prepares la consulta y vincules los datos antes de usar quote
  #7 (permalink)  
Antiguo 10/09/2013, 15:39
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: SQL Injection Ayuda

Podrias leerte el manual, http://php.net/manual/es/pdostatement.execute.php y http://www.php.net/manual/es/pdostatement.bindparam.php
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #8 (permalink)  
Antiguo 10/09/2013, 15:40
 
Fecha de Ingreso: septiembre-2013
Mensajes: 125
Antigüedad: 11 años, 2 meses
Puntos: 3
Respuesta: SQL Injection Ayuda

Me quedo claro, que utilize $resultado->execute(array(':username' => $_POST['username'], ':password' => $_POST['password']));

Aunque yo decia si utilizace query(), pero utilizare prepare();

Gracias por tu ayuda
  #9 (permalink)  
Antiguo 10/09/2013, 15:50
 
Fecha de Ingreso: septiembre-2013
Mensajes: 125
Antigüedad: 11 años, 2 meses
Puntos: 3
Respuesta: SQL Injection Ayuda

Cita:
Iniciado por SkAr88 Ver Mensaje
Podrias leerte el manual, [url]http://php.net/manual/es/pdostatement.execute.php[/url] y [url]http://www.php.net/manual/es/pdostatement.bindparam.php[/url]
Es preferible utilizar execute() que bindParam() para filtrar las variables
  #10 (permalink)  
Antiguo 10/09/2013, 15:52
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: SQL Injection Ayuda

leete el manual en serio ay estan tus respuestas
  #11 (permalink)  
Antiguo 10/09/2013, 15:55
 
Fecha de Ingreso: septiembre-2013
Mensajes: 125
Antigüedad: 11 años, 2 meses
Puntos: 3
Respuesta: SQL Injection Ayuda

Pero, si yo ahora no he preguntado nada, yo ya habia cerrado el tema
  #12 (permalink)  
Antiguo 10/09/2013, 16:00
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: SQL Injection Ayuda

creia que preguntabas si execute es preferible que bindparam no que lo afirmaras , sorry entendi mal . saludos
  #13 (permalink)  
Antiguo 10/09/2013, 16:29
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: SQL Injection Ayuda

No he usadi pdo pero leyendo, yo usaria bindparam en vez de pasar los parametro en un array
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #14 (permalink)  
Antiguo 10/09/2013, 16:40
 
Fecha de Ingreso: septiembre-2013
Mensajes: 125
Antigüedad: 11 años, 2 meses
Puntos: 3
Respuesta: SQL Injection Ayuda

Creo que es igual, solo que bindparam se ejecuta dentro de execute();
  #15 (permalink)  
Antiguo 11/09/2013, 07:01
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: SQL Injection Ayuda

Bueno, está demás decirte que leas el manual.. ya te lo han dicho como 8 veces... Tienes que experimentar amigo, imprimir resultados, imprmir querys así sabrás cómo se comporta..

PREPARE te prepara el arreglo, por así decirlo.. y requiere de EXECUTE para ejecutar la sentencia SQL

QUERY te ejecuta directamente la sentencia SQL, sin filtrar comillas ni nada parecido, no requiere de EXECUTE...

SI ya existe el PREPARE, para qué insistir con QUERY... a menos que lo que necesites sea usar query directamente..

Y deberías explicar qué quieres lograr así no andamos dando tantas vueltas... por más cerrado que esté el tema, y no está marcado como SOLUCIONADO, siempre preguntas cosas muy al aire, tipo:

-"La gota es peligrosa?" QUE VAMOS A SABER NOSOTROS.. sería distintos.. "Hola, mi auto tiene una perdida de aceite en el carter, es peligroso el líquido que sale de ahi?"

Ves la diferencia?
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #16 (permalink)  
Antiguo 11/09/2013, 07:42
 
Fecha de Ingreso: septiembre-2013
Mensajes: 125
Antigüedad: 11 años, 2 meses
Puntos: 3
Respuesta: SQL Injection Ayuda

Si, yo ya tenia todas las dudas solucionadas

Etiquetas: injection, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:48.