Foros del Web » Programando para Internet » PHP »

Duda de seguridad: array a traves de url

Estas en el tema de Duda de seguridad: array a traves de url en el foro de PHP en Foros del Web. Saludos phperos... ¿ Sería seguro pasar una consulta SQL a través de la URL si va metida en un array ?...
  #1 (permalink)  
Antiguo 29/09/2005, 06:07
 
Fecha de Ingreso: junio-2005
Mensajes: 15
Antigüedad: 12 años, 6 meses
Puntos: 0
Duda de seguridad: array a traves de url

Saludos phperos...

¿ Sería seguro pasar una consulta SQL a través de la URL si va metida en un array ?
  #2 (permalink)  
Antiguo 29/09/2005, 06:34
has
 
Fecha de Ingreso: septiembre-2004
Ubicación: Lugo
Mensajes: 28
Antigüedad: 13 años, 3 meses
Puntos: 0
sinceramente hoy en dia no hay nada seguro ,no soy nigun experto tu date cuenta de que si puedes meter una consula sql en el array y lo pasas a travez del sql estas pasando la consulta , de tal forma a las variables pasadas por url se pueden asignar valores, carateres , ect.. url\?$matriz="laconsulta"; y yo cojo y hago url\?$matriz="Select user,pass from table_users" , te quito la laconsulta y meto esto , tp soy un experto y no sabria como hacerlo pero no se me da q pasar la consulta por la url no es nada seguro, hoy en dia ya te hace injeccion de codigo sql sin ejecutar la consulta por url, yo te recominedo q pases las variables solo por url.
__________________
Mi WEB Intercambio enlaces de texto RedesdelWeb mi msn [email protected] :si: :si: :si: :si:

Última edición por has; 29/09/2005 a las 06:39
  #3 (permalink)  
Antiguo 29/09/2005, 08:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Nunca debes pasar una consulta SQL por el URL (sea en un array o como sea) ...

Lo que debes es pasar tus variables con sus valores que luego compondran tu sentencia SQL adecuada ..

No sé el objetivo de pasar tu sentencia SQL a ejecutar (podría ser una especi de GUI para Mysql?) .. bueno .. si fuese así, debes implementar un buen sistema de filtrado de esa variable que va a contener tu sentencia SQL y sólo aceptar las sentencias SQL que permitas hacer .. por ejemplo .. Si sólo vas hacer un "SELECT" .. descarta cualquier palabra tipo "DELETE" .. "UPDATE" .. etc que pueda llegar de ahí por una alteración de tus datos (URL/campos).

En otros casos podrías usar sesiones en lugar de propagar ese dato por el URL .. generas tu variable de sesión donde lo originas y lo lees en el scirpt que pasas. De esta forma no circulará por el URL ese dato "sensible" de ser modificado . .No obstante no está de más validar lo que anteriormente te he comentado.

Un saludo,
  #4 (permalink)  
Antiguo 29/09/2005, 08:12
 
Fecha de Ingreso: agosto-2005
Mensajes: 143
Antigüedad: 12 años, 3 meses
Puntos: 0
Como te han dicho no es nada seguro.

Yo también usaría sesiones y aún usando estas tendrías que usar alguna función(es) para filtrar el contenido. Véase: mysql_real_escape_string(), addslashes(), str_replace(), etc como ya te han dicho.

Si dijeras exactamente que es lo que quieres hacer a lo mejor podemos darte otras alternativas.
  #5 (permalink)  
Antiguo 29/09/2005, 09:59
 
Fecha de Ingreso: junio-2005
Mensajes: 15
Antigüedad: 12 años, 6 meses
Puntos: 0
Gracias. Pues es bastante más sencillo...

Me he creado un script que pagina los resultados de una consulta.
La consulta está recogida en una variable.
Por lo que, cuando llamo a la página 2 (por ejemplo), necesito pasarle esa variable que contiene la consulta para poder seguir ejecutando la paginación.

He estado intentando averiguar cómo lo hace el Paginator de JPinedo e incluso me pregunto cómo lo hace el buscador de forosdelweb.com.

La conclusión a la que he llegado es crear una variable de sesión tipo array.
Aplicarle un ID a ese array que guarde la consulta. Por ejemplo: $miconsulta(ID)="SELECT * FROM ..."
y pasar ese ID a través de la URL junto con el número de página (para la paginación).

La única pega es: cómo y cuándo debo eliminar esa variable de sesión $miconsulta(ID) para que no se quede eternamente ahí guardada.
  #6 (permalink)  
Antiguo 29/09/2005, 10:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Yo te recomendaría leer más atentamente el código del "Paginator" .. La consulta SQL NO se pasa por el URL en ningún momento .. es FIJA (salvo lo que puedas tener variable como otras variables para hacer filtrados y demás).

Un saludo,
  #7 (permalink)  
Antiguo 30/09/2005, 02:09
 
Fecha de Ingreso: junio-2005
Mensajes: 15
Antigüedad: 12 años, 6 meses
Puntos: 0
Gracias por vuestra paciencia.

Entiendo entonces que:
Tengo que pasar los parámetros de la consulta, cada vez, a través de la URL usando un array.
Y que tengo que construir la consulta cada vez que se llame a una página (de paginación).

A Thisone:
Yo uso mysql_real_escape_string($cadena,$conexión) únicamente. ¿ Es bastante ?
¿ Existe alguna forma de usar esta función sin tener la conexión a la base datos activa ?
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 12:40.