Foros del Web » Programando para Internet » PHP »

Esperar antes de realizar lo siguiente

Estas en el tema de Esperar antes de realizar lo siguiente en el foro de PHP en Foros del Web. Hola, tengo este codigo php; Código PHP: <?php      include ( "conex.php" );    function  quitar ( $mensaje ){     $mensaje  =  str_replace ( "<" , "&lt;" ...
  #1 (permalink)  
Antiguo 11/05/2010, 01:39
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 13 años, 11 meses
Puntos: 1
Esperar antes de realizar lo siguiente

Hola, tengo este codigo php;

Código PHP:
<?php  
  
include ("conex.php");
   function 
quitar($mensaje){

   
$mensaje str_replace("<","&lt;",$mensaje);
   
$mensaje str_replace(">","&gt;",$mensaje);
   
$mensaje str_replace("\'","'",$mensaje);
   
$mensaje str_replace('\"',"&quot;",$mensaje);
   
$mensaje str_replace("\\\\","\\",$mensaje);
  return 
$mensaje;
}
  

  if(
trim($HTTP_POST_VARS["nick"]) != "" && trim($HTTP_POST_VARS["password"]) != ""){
  
$sql "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["nick"])."'";
  
$result mysql_query($sql);
  if(
$row mysql_fetch_array($result)){
  echo 
"Error, ese nick ya ha sido registrado";
  
header("location: fusuarios.php");
  }
  else
  {
  
$sql "INSERT INTO usuarios (nick,password,nombre,email) VALUES (";
  
$sql .= "'".quitar($HTTP_POST_VARS["nick"])."'";
  
$sql .= ",'".quitar($HTTP_POST_VARS["password"])."'";
  
$sql .= ",'".quitar($HTTP_POST_VARS["nombre"])."'";
  
$sql .= ",'".quitar($HTTP_POST_VARS["email"])."'";
  
$sql .= ")";
  
mysql_query($sql);
  echo 
"El registro del usuario se ha efectuado correctamente!";
  
header("location: administracion.php");
  }
  
mysql_free_result($result);
  }
  else
  {
  echo 
"Debe rellenar como minimo los campos de Nick y password";
  
header("location: fusuarios.php");
  }
  
mysql_close();
  
?>
Es para registrar un usuario, el caso es que yo quiero que muestre la página, y este unos 5 segundos o así mostrando el mensaje (cualquiera de los tres mensajes posibles) antes de realizar la instruccion header().

Como podría hacer esto? Un saludo.
  #2 (permalink)  
Antiguo 11/05/2010, 02:45
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 13 años, 11 meses
Puntos: 40
Respuesta: Esperar antes de realizar lo siguiente

Existe la función sleep, que lo que hace es simplemente esperar, solo que hay veces que espera y aún no ha enviado nada en pantalla, por lo tanto yo te recomendaria que usaras el tag meta:

<META HTTP-EQUIV="refresh" CONTENT="10; url=http://tuurl">

El 10 son los segundos que quieres que espere antes de reedireccionarte.

Un saludo
  #3 (permalink)  
Antiguo 11/05/2010, 02:51
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: Esperar antes de realizar lo siguiente

x -- RESPUESTA DUPLICADA :/
  #4 (permalink)  
Antiguo 11/05/2010, 02:52
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: Esperar antes de realizar lo siguiente

Cita:
Iniciado por Heli0s Ver Mensaje
Existe la función sleep, que lo que hace es simplemente esperar, solo que hay veces que espera y aún no ha enviado nada en pantalla, por lo tanto yo te recomendaria que usaras el tag meta:

<META HTTP-EQUIV="refresh" CONTENT="10; url=http://tuurl">

El 10 son los segundos que quieres que espere antes de reedireccionarte.

Un saludo
Tengo una duda,

<META HTTP-EQUIV="refresh" CONTENT="10; url=http://tuurl">

La url es la que quiero que espere, no? Es decir, sería así

<META HTTP-EQUIV="refresh" CONTENT="10; url=http://www.juventudmdc.comlu.com/loginpanel/registrar.php">


Un saludo y lo voy a probar, gracias ^^.
  #5 (permalink)  
Antiguo 11/05/2010, 02:54
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 13 años, 11 meses
Puntos: 40
Respuesta: Esperar antes de realizar lo siguiente

La URL es a la página a la que quieres que te envíe una vez pasados los X segundos, si es la misma puedes quitar lo de url, y que simplemente refresque la página cada X segundos.

Un saludo
  #6 (permalink)  
Antiguo 11/05/2010, 02:59
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: Esperar antes de realizar lo siguiente

Cita:
Iniciado por Heli0s Ver Mensaje
La URL es a la página a la que quieres que te envíe una vez pasados los X segundos, si es la misma puedes quitar lo de url, y que simplemente refresque la página cada X segundos.

Un saludo
Y si quiero que sea distinta pagina a la que te envie segun pase una cosa u otra?

Lo había implementado así

Código PHP:
<META HTTP-EQUIV="refresh" CONTENT="10; url=http://www.juventudmdc.comlu.com/loginpanel/registrar.php">
<?php  
  
include ("conex.php");
   function 
quitar($mensaje){

   
$mensaje str_replace("<","&lt;",$mensaje);
   
$mensaje str_replace(">","&gt;",$mensaje);
   
$mensaje str_replace("\'","'",$mensaje);
   
$mensaje str_replace('\"',"&quot;",$mensaje);
   
$mensaje str_replace("\\\\","\\",$mensaje);
  return 
$mensaje;
}
  

  if(
trim($HTTP_POST_VARS["nick"]) != "" && trim($HTTP_POST_VARS["password"]) != ""){
  
$sql "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["nick"])."'";
  
$result mysql_query($sql);
  if(
$row mysql_fetch_array($result)){
  echo 
"Error, ese nick ya ha sido registrado";
  
header("location: fusuarios.php");
  }
  else
  {
  
$sql "INSERT INTO usuarios (nick,password,nombre,email) VALUES (";
  
$sql .= "'".quitar($HTTP_POST_VARS["nick"])."'";
  
$sql .= ",'".quitar($HTTP_POST_VARS["password"])."'";
  
$sql .= ",'".quitar($HTTP_POST_VARS["nombre"])."'";
  
$sql .= ",'".quitar($HTTP_POST_VARS["email"])."'";
  
$sql .= ")";
  
mysql_query($sql);
  echo 
"El registro del usuario se ha efectuado correctamente!";
  
header("location: administracion.php");
  }
  
mysql_free_result($result);
  }
  else
  {
  echo 
"Debe rellenar como minimo los campos de Nick y password";
  
header("location: fusuarios.php");
  }
  
mysql_close();
  
?>
El caso es que dependiendo de que mensaje de, va a un sitio u a otro..
  #7 (permalink)  
Antiguo 11/05/2010, 03:01
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 13 años, 11 meses
Puntos: 40
Respuesta: Esperar antes de realizar lo siguiente

Entonces usa el condicional if, o si el if es el que ya tienes creado, simplemente usa un echo para mostrar el <meta http-equiv="refresh" etc, muestralo desde PHP con un echo, tendrá el mismo efecto, una salida HTML.

Un saludo
  #8 (permalink)  
Antiguo 11/05/2010, 03:12
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: Esperar antes de realizar lo siguiente

Okei, le he implementado solo con 1 para probar y espera los 10 segundos y se redirecciona, el caso es que me dice que no estoy logueado :S

Código PHP:
<?php  
  
include ("conex.php");
   function 
quitar($mensaje){

   
$mensaje str_replace("<","&lt;",$mensaje);
   
$mensaje str_replace(">","&gt;",$mensaje);
   
$mensaje str_replace("\'","'",$mensaje);
   
$mensaje str_replace('\"',"&quot;",$mensaje);
   
$mensaje str_replace("\\\\","\\",$mensaje);
  return 
$mensaje;
}
  

  if(
trim($HTTP_POST_VARS["nick"]) != "" && trim($HTTP_POST_VARS["password"]) != ""){
  
$sql "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["nick"])."'";
  
$result mysql_query($sql);
  if(
$row mysql_fetch_array($result)){
  echo 
"<META HTTP-EQUIV=\"refresh\" CONTENT=\"10; url=http://www.juventudmdc.comlu.com/loginpanel/fusuarios.php\">";
  echo 
"Error, ese nick ya ha sido registrado";
  }
  else
  {
  
$sql "INSERT INTO usuarios (nick,password,nombre,email) VALUES (";
  
$sql .= "'".quitar($HTTP_POST_VARS["nick"])."'";
  
$sql .= ",'".quitar($HTTP_POST_VARS["password"])."'";
  
$sql .= ",'".quitar($HTTP_POST_VARS["nombre"])."'";
  
$sql .= ",'".quitar($HTTP_POST_VARS["email"])."'";
  
$sql .= ")";
  
mysql_query($sql);
  echo 
"El registro del usuario se ha efectuado correctamente!";
  }
  
mysql_free_result($result);
  }
  else
  {
  echo 
"Debe rellenar como minimo los campos de Nick y password";
   }
  
mysql_close();
  
?>

Para acceder a fusuarios y hacer el registro y que me salga el error tengo que estar logueado... porque despues me dice q no lo estoy, si realmente si lo estoy? :S

Un saludo.
  #9 (permalink)  
Antiguo 11/05/2010, 03:14
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: Esperar antes de realizar lo siguiente

Vale, no se que tendrá que ver, pero ya lo he arreglado, he cambiado toda esa url por url=fusuarios.php a secas y funciona xD

Un saludo y gracias.
  #10 (permalink)  
Antiguo 11/05/2010, 06:13
Avatar de zerpico_01  
Fecha de Ingreso: enero-2008
Ubicación: Wilde - Avellaneda -
Mensajes: 421
Antigüedad: 16 años, 2 meses
Puntos: 13
Respuesta: Esperar antes de realizar lo siguiente

Pues primero si ya has solucionado el tema te recomiendo que rehagas tu codigo ya que el reeplazar esos caracteres no te aseguran nada ....
ademas has colocado la urls de tu pagina y estas mostrando un codigo totalmente injectable y podrias tener problemas ....

debes usar --> strip_tags
debes usar --> htmlspecialchars
debes usar --> htmlentities
debes usar ---> mysql_real_escape_string

ademas si vas reemplazar caracteres te recomiendo que reemplaces estos:
Cita:
('*','#','@','!','%','&','|','+','-','$','^' ,"\x00", '\\', '/', ':', '?', '¿', '<', '>', ',', ';','(',')');
y para redireccionar a la pagina que deseas coloca donde estan los mesajes la pagina que deseas haciendolo asi:

Código PHP:
 echo "<script type=\"text/javascript\"> 

window.location=\"pagina_que_quieres_mostrar.php\"; 

</script> "

saludos!!
  #11 (permalink)  
Antiguo 11/05/2010, 07:00
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 13 años, 11 meses
Puntos: 40
Respuesta: Esperar antes de realizar lo siguiente

Si reemplaza los caracteres < y >, strip_tags no hace falta, ya que no pueden haber etiquetas, ni código PHP, htmlspecialchars y htmlentities lo que hacen son reemplazar caracteres también, y los más importantes son los que él ya ha reemplazado, eso si, asegurate que cualquier variable que venga del exterior se le añada el carácter \ si tiene comillas, porque entonces te expondrías a un posible ataque de sql inyection.

Y para reedireccionar no le recomiendo que lo haga con javascript, ya que javascript es un lenguaje que suele venir aparte con los navegadores, pero no siempre está disponible, y se puede desactivar, las etiquetas html las lee el navegador sí o sí.

Un saludo
  #12 (permalink)  
Antiguo 11/05/2010, 17:22
Avatar de zerpico_01  
Fecha de Ingreso: enero-2008
Ubicación: Wilde - Avellaneda -
Mensajes: 421
Antigüedad: 16 años, 2 meses
Puntos: 13
Respuesta: Esperar antes de realizar lo siguiente

Pues claro debes usar el que se ajuste a sus necesidades, pero de todos modos yo usaria todos....

y lo de javascript pues si funciona del lado usuario pero en este caso no esta funcionando como dices , pues has un test en tu navegador desactiva javascript y mira si sigue funcionando ....

pues creo que debe seguir funcionando idependientemente de tener habilitado o no javascript....

saludos!
  #13 (permalink)  
Antiguo 11/05/2010, 19:11
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 13 años, 11 meses
Puntos: 40
Respuesta: Esperar antes de realizar lo siguiente

Si deshabilitas javascript nunca va a funcionar el código que has puesto.


Un saludo
  #14 (permalink)  
Antiguo 12/05/2010, 01:26
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: Esperar antes de realizar lo siguiente

Cita:
Iniciado por Heli0s Ver Mensaje
Si reemplaza los caracteres < y >, strip_tags no hace falta, ya que no pueden haber etiquetas, ni código PHP, htmlspecialchars y htmlentities lo que hacen son reemplazar caracteres también, y los más importantes son los que él ya ha reemplazado, eso si, asegurate que cualquier variable que venga del exterior se le añada el carácter \ si tiene comillas, porque entonces te expondrías a un posible ataque de sql inyection.

Y para reedireccionar no le recomiendo que lo haga con javascript, ya que javascript es un lenguaje que suele venir aparte con los navegadores, pero no siempre está disponible, y se puede desactivar, las etiquetas html las lee el navegador sí o sí.

Un saludo

Hola, y en principio gracias a los dos Heli0s y zerpico_01.

Estoy interesado en arreglar esto de los SQL Inyection, porque esta página va a ser bastante importante, y no quiero que la destrocen en... 5 días? xDD

Todo lo que veais que puede dar paso a algun tipo de modificacion indeseada (por llamarlo de alguna forma) ayudadme a arreglarlo.. porque yo no tengo ni idea XD


Como me puedo asegurar de lo que me has dicho Heli0s?
  #15 (permalink)  
Antiguo 12/05/2010, 01:38
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: Esperar antes de realizar lo siguiente

Por cierto, he pensado en añadir a mi codigo esto:

$mensaje = str_replace("*","#",$mensaje);
$mensaje = str_replace("@","!",$mensaje);
$mensaje = str_replace("%","&",$mensaje);
$mensaje = str_replace("|","+",$mensaje);
$mensaje = str_replace("-","$",$mensaje);
$mensaje = str_replace("^","\x00",$mensaje);
$mensaje = str_replace(":",";",$mensaje);
$mensaje = str_replace(",",".",$mensaje);

Decidme si lo añado o no, y si esta bien xD

PD: No se pueden poner todos los caracteres en un replace? XD
  #16 (permalink)  
Antiguo 12/05/2010, 02:29
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 13 años, 11 meses
Puntos: 40
Respuesta: Esperar antes de realizar lo siguiente

Te recomiendo que cualquier variable que venga del exterior la pases por stripslashes y addslashes (o preferiblemente, si esa variable va a ir a una consulta sql, mysql_real_escape_string)

La función de addslashes y stripslashes es la opuesta, y podría parecer una tonteria aplicar las dos, pero tienes dos opciones, o detectar si el servidor pone las barras de escape automaticamente con get_magic_quotes_gpc y si lo aplica no hacer nada, y si no lo aplica pues aplicarlo tu con addslashes, y la otra opción es pasar cualquier variable externa por stripslashes (en ese caso, si añadir la barra de escape automaticamente esta activado, se quitara, y si no esta activado la función no hará nada ya que no hay nada que quitar) y seguidamente usar addslashes (para que finalmente tenga las barras de escape, y así te aseguras que siempre las tenga) o mysql_real_escape_string ya que es identica a addslashes pero tiene más cosas que puede prevenir en los ataques a la base de datos, y sobre reemplazar, creo que con lo que tienes bastaría, pero creo que lo más recomendable es que uses htmlentities ya que hace lo mismo, reemplazar, reemplaza más caracteres, y el código es más limpio.

P.D: Y no veo lógico reemplazar esos caracteres que has puesto en tu último post, la cuestión es reemplazar los caracteres por la codificación que tienen en html, para que se sigan mostrando en pantalla, pero que no tengan efecto a nivel código, y tu en esos replaces que has puesto no veo que los reemplaces por su codificación en html.


Un saludo

Última edición por Heli0s; 12/05/2010 a las 02:34
  #17 (permalink)  
Antiguo 12/05/2010, 02:54
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: Esperar antes de realizar lo siguiente

Cita:
Iniciado por Heli0s Ver Mensaje
Te recomiendo que cualquier variable que venga del exterior la pases por [URL="http://es2.php.net/manual/en/function.stripslashes.php"]stripslashes[/URL] y [URL="http://es2.php.net/manual/en/function.addslashes.php"]addslashes[/URL] (o preferiblemente, si esa variable va a ir a una consulta sql, [URL="http://es2.php.net/manual/en/function.mysql-real-escape-string.php"]mysql_real_escape_string[/URL])

La función de addslashes y stripslashes es la opuesta, y podría parecer una tonteria aplicar las dos, pero tienes dos opciones, o detectar si el servidor pone las barras de escape automaticamente con [URL="http://es2.php.net/manual/en/function.get-magic-quotes-gpc.php"]get_magic_quotes_gpc[/URL] y si lo aplica no hacer nada, y si no lo aplica pues aplicarlo tu con addslashes, y la otra opción es pasar cualquier variable externa por stripslashes (en ese caso, si añadir la barra de escape automaticamente esta activado, se quitara, y si no esta activado la función no hará nada ya que no hay nada que quitar) y seguidamente usar addslashes (para que finalmente tenga las barras de escape, y así te aseguras que siempre las tenga) o [URL="http://es2.php.net/manual/en/function.mysql-real-escape-string.php"]mysql_real_escape_string[/URL] ya que es identica a addslashes pero tiene más cosas que puede prevenir en los ataques a la base de datos, y sobre reemplazar, creo que con lo que tienes bastaría, pero creo que lo más recomendable es que uses [URL="http://es2.php.net/manual/en/function.htmlentities.php"]htmlentities[/URL] ya que hace lo mismo, reemplazar, reemplaza más caracteres, y el código es más limpio.

P.D: Y no veo lógico reemplazar esos caracteres que has puesto en tu último post, la cuestión es reemplazar los caracteres por la codificación que tienen en html, para que se sigan mostrando en pantalla, pero que no tengan efecto a nivel código, y tu en esos replaces que has puesto no veo que los reemplaces por su codificación en html.


Un saludo
Se me ha ido la pinza en el str_replace, los he echo mal XDD! Pero bueno si dices que con los que tengo es suficiente pues eso me ahorro.

Respecto a los demas temas te comento... Bueno para empezar te digo que.. NO ME ENTERERO DE NA!! en la pagina de php.net .. siempre me la pasas y nunca me entero de nada tio, lo siento jajajjajajaj


Que variables son las que vienen del exterior en mi caso??

Y me podrías ayudar con esto del addslashes?.


Lo del mysql_real_escape_String este, supongo que se utiliza mas para las busquedas, que los parametros que te pase el usuario, se introducen en una operacion SQL para realizar una busqueda (en el where, o en cosas así). No? Pero.. a mi en este caso nada me afecta a una consulta.
  #18 (permalink)  
Antiguo 12/05/2010, 03:05
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 13 años, 11 meses
Puntos: 40
Respuesta: Esperar antes de realizar lo siguiente

¿No pasas variables exteriores a consultas SQL? Yo he mirado tu código y si que he visto varias consultas que reciben variables del exterior.

Las variables exteriores pueden ser... POST, GET, COOKIE, SESSION (Aunque estás últimas también depende, el valor de la variable SESSION podría ser asignado por ti y entonces no habría problema, pero a veces se le asigna un valor que le da el usuario mediante un campo de texto o lo que sea)

Y sobre lo de que no entiendes la página de php.net, ¿Es por el ingles? ¿O porque no entiendes el como explican las cosas?, Si te ha quedado alguna duda sobre una función no dudes en preguntarla.


Un saludo
  #19 (permalink)  
Antiguo 12/05/2010, 03:14
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: Esperar antes de realizar lo siguiente

Cita:
Iniciado por Heli0s Ver Mensaje
¿No pasas variables exteriores a consultas SQL? Yo he mirado tu código y si que he visto varias consultas que reciben variables del exterior.

Las variables exteriores pueden ser... POST, GET, COOKIE, SESSION (Aunque estás últimas también depende, el valor de la variable SESSION podría ser asignado por ti y entonces no habría problema, pero a veces se le asigna un valor que le da el usuario mediante un campo de texto o lo que sea)

Y sobre lo de que no entiendes la página de php.net, ¿Es por el ingles? ¿O porque no entiendes el como explican las cosas?, Si te ha quedado alguna duda sobre una función no dudes en preguntarla.


Un saludo
No, no es por el ingles, sino por como explican las cosas, y como ponen los ejemplos, sinceramente lo entiendo mejor cuando me lo explicas tu.. porque allí no me entero de na jajaj.

La session en mi caso, no pasa el usuario ningun parametro, se crea sola..

Ahora que dices lo del post y el get, en las noticias por ejemplo, al seleccionar la noticia, el sistema que creamos, coge el id y se lo pasa por GET, en ese caso debería usarlo?

En esto si que necesitaría un tio que me mirase todo el codigo y me ayudase porque no se muy bien donde tendría que aplicarlo y donde no jejeje.


Me podrías poner unos ejemplos de donde tengo que aplicar y de que forma el addslashes ?
(Si puede ser con un trozo mio de codigo, que al ser "mio" si que lo entiendo jeje).
  #20 (permalink)  
Antiguo 12/05/2010, 03:18
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 13 años, 11 meses
Puntos: 40
Respuesta: Esperar antes de realizar lo siguiente

Únicamente en las variables session puedes estar tranquilo cuando le asignas tu desde PHP un valor, ya que se guardan en el servidor, todas las demás pueden ser manipuladas.

Aunque le apliques el valor a la variable y se la pases por GET, ¿Quien te asegura que un usuario malintencionado no va a cambiar ese valor desde la URL para realizar operaciones que desde la web en si no se podría? ¿O que un usuario no va a editar las variables de la cookie para realizar una inyecion de código?

Siempre hay que realizar comprobaciones, y cuantas mas mejor, pasas el ID por get? pues podrías realizar todo lo comentado en los otros post, htmlentities...addslashes... y aparte, comprobar que es un INT, y que no es un string, así sería prácticamente imposible realizar nada desde esa variable.


Un saludo
  #21 (permalink)  
Antiguo 12/05/2010, 03:29
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: Esperar antes de realizar lo siguiente

Cita:
Iniciado por Heli0s Ver Mensaje
Únicamente en las variables session puedes estar tranquilo cuando le asignas tu desde PHP un valor, ya que se guardan en el servidor, todas las demás pueden ser manipuladas.

Aunque le apliques el valor a la variable y se la pases por GET, ¿Quien te asegura que un usuario malintencionado no va a cambiar ese valor desde la URL para realizar operaciones que desde la web en si no se podría? ¿O que un usuario no va a editar las variables de la cookie para realizar una inyecion de código?

Siempre hay que realizar comprobaciones, y cuantas mas mejor, pasas el ID por get? pues podrías realizar todo lo comentado en los otros post, htmlentities...addslashes... y aparte, comprobar que es un INT, y que no es un string, así sería prácticamente imposible realizar nada desde esa variable.


Un saludo

Esto se me va de las manos.. jajaja, esto me esta empezando a superar, lo veo bastante complicado ya.

Abrire un post llamado "Seguridad" o algo así, e intentare ir haciendolo poco a poco, porque.. uff. xD

Las sesiones en mi caso, las crea el servidor, porque ni yo, ni un usuario esta asignando el valor de la sesión (creo), no?

Respecto a las funciones que me dijiste, htmlentities y addslashes no las comprendí, cuando puedas ponme unos ejemplillos a ver si lo capto.
  #22 (permalink)  
Antiguo 12/05/2010, 03:41
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 13 años, 11 meses
Puntos: 40
Respuesta: Esperar antes de realizar lo siguiente

Addslashes lo que hace es añadir la barra de escape a ciertos signos, como por ejemplo la comilla simple '

La comilla simple es usada para ataques en SQL inyection, no voy a poner un ejemplo ya que no lo veo ético, con saber que es usado para eso creo que basta, y el remedio que hay para evitarlo es escapar las comillas, la función addslashes lo que hace es pasar esto -> ' a esto \' por lo tanto se impide el ataque de SQL inyection.

htmlentities sirve para evitar ataques de otro tipo, llamados ataques XSS, que por supuesto tampoco voy a poner ejemplos, la fuente de estos ataques es la posibilidad de poder añadir código HTML en un texto, ya que si metes HTML en un campo y de ese campo pasa a la base de datos para ser mostrado posteriormente, ese HTML se ejecutara como HTML, la solución es intercambiar los signos < y > (los que empiezan y cierran las etiquetas) por el código HTML de esos signos, en este caso htmlentities cambiara el signo < por &lt; y el signo > por &gt; por lo tanto ya no sería posible añadir código HTML.


En tu código las sessiones no son creadas por nadie, no usas sessiones, que tengas un sistema de login de usuarios no significa que uses sessiones de PHP.

El tema de seguridad es bastante amplio y siempre es bueno estar informado.
  #23 (permalink)  
Antiguo 12/05/2010, 03:48
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: Esperar antes de realizar lo siguiente

Cita:
Iniciado por Heli0s Ver Mensaje
Addslashes lo que hace es añadir la barra de escape a ciertos signos, como por ejemplo la comilla simple '

La comilla simple es usada para ataques en SQL inyection, no voy a poner un ejemplo ya que no lo veo ético, con saber que es usado para eso creo que basta, y el remedio que hay para evitarlo es escapar las comillas, la función addslashes lo que hace es pasar esto -> ' a esto \' por lo tanto se impide el ataque de SQL inyection.

htmlentities sirve para evitar ataques de otro tipo, llamados ataques XSS, que por supuesto tampoco voy a poner ejemplos, la fuente de estos ataques es la posibilidad de poder añadir código HTML en un texto, ya que si metes HTML en un campo y de ese campo pasa a la base de datos para ser mostrado posteriormente, ese HTML se ejecutara como HTML, la solución es intercambiar los signos < y > (los que empiezan y cierran las etiquetas) por el código HTML de esos signos, en este caso htmlentities cambiara el signo < por &lt; y el signo > por &gt; por lo tanto ya no sería posible añadir código HTML.


En tu código las sessiones no son creadas por nadie, no usas sessiones, que tengas un sistema de login de usuarios no significa que uses sessiones de PHP.

El tema de seguridad es bastante amplio y siempre es bueno estar informado.


Ves tio, así me queda clarisimo jeje.

Lo de los ejemplos, no me refiero a un ejemplo de ataque de inyeccion SQL, sino de como utilizar estas "etiquetas". Es decir, de como se aplica el addslashes, en donde, etc..

Me entendiste mal, jejeje.

Muchas gracias, y por cierto, voy a buscar algo sobre XSS por google, porque ni idea de lo que es.

Un saludo.


PD: Despues voy a abrir un post de Seguridad con algunas de las etiquetas que tu me has dicho, y que la gente me ayude a aplicarlos, y aporte lo que crea conveniente, es decir, mas instrucciones o otras formas de aplicarlo etc..
  #24 (permalink)  
Antiguo 12/05/2010, 03:58
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 13 años, 11 meses
Puntos: 40
Respuesta: Esperar antes de realizar lo siguiente

Bueno realmente el ejemplo te lo he puesto, solo que explicando la funcion jeje, te he dicho que cosas sustituyen y que realizan, ¿Cuando usarlas? Siempre que la variable sea externa.

Un saludo

Etiquetas: esperar, realizar, siguiente
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:06.