Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

¿Una manera de evitar inyecciones SQL mediante la URL?

Estas en el tema de ¿Una manera de evitar inyecciones SQL mediante la URL? en el foro de Mysql en Foros del Web. supongamos que mi url sea así http://url.com/index.php?id=1556 la consulta sería @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $id = $_GET [ 'id' ] ; $consulta = ...
  #1 (permalink)  
Antiguo 02/04/2012, 11:41
 
Fecha de Ingreso: febrero-2011
Mensajes: 233
Antigüedad: 13 años, 2 meses
Puntos: 4
¿Una manera de evitar inyecciones SQL mediante la URL?

supongamos que mi url sea así

http://url.com/index.php?id=1556

la consulta sería

Código PHP:
Ver original
  1. $id = $_GET['id'];
  2. $consulta = mysql_query("SELECT * FROM tabla WHERE id='$id'");

ahora, la manera que pienso yo de evitar una inyeccion sql sería cerrar la conexión a la base de datos si no existe el id y redirigir a la raíz de la página.

Código PHP:
Ver original
  1. $id = $_GET['id'];
  2. $consulta = mysql_query("SELECT * FROM tabla WHERE id='$id'");
  3.  
  4. if($consulta == TRUE){
  5.  
  6. .....
  7. } else {
  8.  
  9. header("location: http://url.com");
  10. }

este sería una buena opción para evitar inyección sql a través de la URL.?
  #2 (permalink)  
Antiguo 02/04/2012, 12:10
 
Fecha de Ingreso: diciembre-2009
Ubicación: Santiago, Chile
Mensajes: 143
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: ¿Una manera de evitar inyecciones SQL mediante la URL?

Cita:
Iniciado por tonydx16 Ver Mensaje
supongamos que mi url sea así

http://url.com/index.php?id=1556

la consulta sería

Código PHP:
Ver original
  1. $id = $_GET['id'];
  2. $consulta = mysql_query("SELECT * FROM tabla WHERE id='$id'");

ahora, la manera que pienso yo de evitar una inyeccion sql sería cerrar la conexión a la base de datos si no existe el id y redirigir a la raíz de la página.

Código PHP:
Ver original
  1. $id = $_GET['id'];
  2. $consulta = mysql_query("SELECT * FROM tabla WHERE id='$id'");
  3.  
  4. if($consulta == TRUE){
  5.  
  6. .....
  7. } else {
  8.  
  9. header("location: http://url.com");
  10. }

este sería una buena opción para evitar inyección sql a través de la URL.?
Mira yo lo que hago es verficar que $_GET['id'] sea un numero antes de hacer cualquier consulta a la base de datos
Código PHP:
Ver original
  1. // verifico que $_GET['id'] sea distinto de un numero si es asi lo redirecciono adonde yo quiera
  2. if(!is_numeric($_GET['id'])){
  3.  
  4. echo "<META HTTP-EQUIV=\"refresh\" content=\"0; URL=index.php\"></p> ";
  5. }
  6. else {
  7. consulta ...
  8. }
  #3 (permalink)  
Antiguo 02/04/2012, 15:02
 
Fecha de Ingreso: febrero-2011
Mensajes: 233
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: ¿Una manera de evitar inyecciones SQL mediante la URL?

ok.. claro pero que tal si en vez de id sea url..

http://url.com/index.php?url=un-articulo

$url = $_GET['url'];
mysql_query("SELECT * FROM tabla WHERE url='$url'") ;


entonces... vale lo que mencioné?.... y otra consulta... hay alguna manera de que hagan inyecciones sql a url amigables?
  #4 (permalink)  
Antiguo 03/04/2012, 09:17
Avatar de jamie_88  
Fecha de Ingreso: abril-2011
Ubicación: Lima
Mensajes: 161
Antigüedad: 13 años
Puntos: 28
Respuesta: ¿Una manera de evitar inyecciones SQL mediante la URL?

en realidad no entendi muy bien que quieres evitar...

pero si usas isset o empty?

Código PHP:
    if(isset($_GET['url']){$id=$_GET["url"];
    
$consulta mysql_query("SELECT * FROM tabla WHERE url='$url'");}
    else {
    
mysql_close();
    
header("location: http://url.com");
    }

//
if(empty($_GET['url']){mysql_close();
    
header("location: http://url.com");}
    else {
    
$id=$_GET["url"];
    
$consulta mysql_query("SELECT * FROM tabla WHERE url='$url'");
    } 

Etiquetas: inyección, url
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 18:21.