Foros del Web » Programando para Internet » PHP »

Seguridad php inyecciones sql

Estas en el tema de Seguridad php inyecciones sql en el foro de PHP en Foros del Web. Estoy en este momento ajustando la seguridad de un sitio y para evitar que personas ajenas al sitio tengan la posibilidad siquiera de inyectar sql ...
  #1 (permalink)  
Antiguo 07/11/2012, 14:03
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Seguridad php inyecciones sql

Estoy en este momento ajustando la seguridad de un sitio y para evitar que personas ajenas al sitio tengan la posibilidad siquiera de inyectar sql estoy haciendo esto

en el index al primer acceso chequeo $_SESSION['propietario'], evidentemente como esa variable tendrá el valor "" inicio la configuracion del sitio y a rellenar variables de sesion que acompañaran a toda la visita se loguee o no, a [propietario] le asigno misitio.com a [usuario] le asigno "" y a [administrador] le asigno 0

una vez loguean a [usuario] le asigno su id de usuario y a [administrador] segun sea, 1 o 0
luego en las páginas privadas comparo algo del estilo
if($_SESSION['usuario']==""){die("Restringido");}

y en las de administracion como esto
if($_SESSION['administrador']!=1){die("Restringido");}

en este momento se que no estoy protegiendo las inyecciones como tal,pero ¿esto es seguro para garantizar que ningún usuario pueda acceder de ninguna forma a consultas críticas, si no es administrador o nadie ajeno a la web sin cuenta pueda estar haciendo intentos en zonas privadas, a ver si cuela algo por algún lado?
  #2 (permalink)  
Antiguo 07/11/2012, 14:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Seguridad php inyecciones sql

Pues sí, no estas haciendo nada para las inyecciones, pero mientras no puedan cambiar la sesión de alguna forma, ese código es razonablemente seguro.

Por cambiar me imagino si no tienes en ningun lugar algo así:
Código PHP:
Ver original
  1. $_SESSION['administrador'] = $_POST['administrador'];

Saludos.
  #3 (permalink)  
Antiguo 07/11/2012, 14:06
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Respuesta: Seguridad php inyecciones sql

todas las páginas cargan a traves del index y si no encuentran las variables de configuracion tambien caen en un die
  #4 (permalink)  
Antiguo 07/11/2012, 14:07
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Respuesta: Seguridad php inyecciones sql

no, lo cambia del valor que tenga en la base de datos

con el post hago un select comparo usuario y contraseña y si coinciden relleno las variables de configuracion de los datos de la bbdd
  #5 (permalink)  
Antiguo 07/11/2012, 14:11
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Respuesta: Seguridad php inyecciones sql

y a eso que dices de

"mientras no puedan cambiar la sesión de alguna forma"

¿hay alguna forma de cambiar variables de sesión que no sea por un fallo en la programacion del sitio?
  #6 (permalink)  
Antiguo 07/11/2012, 14:18
Avatar de LuaToto  
Fecha de Ingreso: octubre-2012
Ubicación: Veracruz
Mensajes: 26
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Seguridad php inyecciones sql

Que yo sepa y segun [URL="http://php.net/manual/es/security.database.sql-injection.php"]http://php.net/manual/es/security.database.sql-injection.php[/URL] para ejecutar inyecciones SQL se necesitan ciertos caracteres especiales, si se validan los campos antes de ser ejecutados, Se evita la inyeccion.

Última edición por LuaToto; 07/11/2012 a las 14:32
  #7 (permalink)  
Antiguo 07/11/2012, 14:33
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Respuesta: Seguridad php inyecciones sql

eso si, ese es el siguiente paso, pero lo que estoy tratando de hacer ahora, es que no sea siquiera posible ponerse a hacer pruebas ni llamar a páginas que reciban formularios mediante curl por ejemplo si no se es usuario registrado, o que por muy registrado que estés no puedas llamar a las páginas de administracion si no eres administrador, que las llames desde fuera pero que recibas un die

por eso me preocupa tanto ahora mismo si es posible modificar las variables de sesion de algun modo que no sea aprovechando fallos mios.
  #8 (permalink)  
Antiguo 07/11/2012, 14:34
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Respuesta: Seguridad php inyecciones sql

pero de todos modos me guardo la página para luego, no había pensado buscar sobre inyecciones en la documentacion ;)
  #9 (permalink)  
Antiguo 07/11/2012, 14:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Seguridad php inyecciones sql

Mientras no tengas algún problema en tu programación, no se pueden cambiar las sesiones, a menos que se tenga acceso al OS del WebServer (para alterar las sesiones en la carpeta temp), pero sí el hacker ya tiene acceso a tu WebServer, tienes otra clase de problemas.

Saludos.
  #10 (permalink)  
Antiguo 07/11/2012, 14:57
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Respuesta: Seguridad php inyecciones sql

hombre, en estos momentos no creo que haya nadie con nada hackeado, la aplicacion es privada y los accesos son muy controlados y ademas en estos momentos es desconocida por asi decirlo


pero ya me quedo tranquilo que eso de las variables de sesion me preocupaba, no aparecia nadie que me pudiese decir con seguridad
Cita:
Mientras no tengas algún problema en tu programación, no se pueden cambiar las sesiones, a menos que se tenga acceso al OS del WebServer
  #11 (permalink)  
Antiguo 07/11/2012, 15:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Seguridad php inyecciones sql

Aún así, revisa tu programación, verifica que tu webserver NO tenga activado register_globals, porque sí lo tiene, puedes encontrar problemas, muy, muy severos.

Saludos.
  #12 (permalink)  
Antiguo 08/11/2012, 11:30
Avatar de LuaToto  
Fecha de Ingreso: octubre-2012
Ubicación: Veracruz
Mensajes: 26
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Seguridad php inyecciones sql

Aparte, al inicio de cada una de las paginas de tu sitio debes retomar la seson con la que iniciaron, en ese momento puedes validar que sea administrador o no, por ejemplo en todas mis paginas tengo el siguiente codigo:
Código PHP:
Ver original
  1. <?php
  2. if($_SESSION['s_username']=="")
  3. {
  4. header('Location: http://luto.sytes.net');
  5. }
  6. $quien = $_SESSION['s_username'];
  7. <?
En caso de que no se detecte nombre de usuario, lo redireccioono a la pagina inicial

Etiquetas: inyecciones, seguridad, sql, variables, usuarios
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 04:05.