Ver Mensaje Individual
  #8 (permalink)  
Antiguo 12/05/2010, 05:08
Avatar de Flow89
Flow89
 
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Seguridad en PHP [Importante];

Heli0s, tengo un formulario para crear usuarios;

Código PHP:
<FORM ACTION="registrar.php" METHOD="post">
   <
br>
      <
b>* Nick:</b><br><br>
 <
INPUT TYPE="text" NAME="nick" SIZE="20" MAXLENGTH="20">
   
      <
BR><br>
  
      <
b>Email:</b><br><br>
 <
INPUT TYPE="text" NAME="email" SIZE="28" MAXLENGTH="100">
   
      <
BR><br>
   
      <
b>* Password:</b><br><br>
 <
INPUT TYPE="password" NAME="password" SIZE="28" MAXLENGTH="20">
  
      <
BR><br>
   
      <
b>Nombre:</b><br><br>
 <
INPUT TYPE="text" NAME="nombre" SIZE="28" MAXLENGTH="255">
   
      <
BR><br>
  
      <
INPUT TYPE="submit" CLASS="boton" VALUE="Registrar"
La seguridad debería aplicarla en la pagina que procesa este codigo, no?

He echo lo siguiente:

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=\"2; url=fusuarios.php\">";
  echo 
"<table style=\"height:100%;width:100%;\"border=\"0\"><tr><td class=\"estilo34\"><div align=\"center\">Error, ese nick ya ha sido registrado. <br> Seras redireccionado automaticamente.</div></td></tr></table>";
  }
  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 
"<META HTTP-EQUIV=\"refresh\" CONTENT=\"2; url=administracion.php\">";
  echo 
"<table style=\"height:100%;width:100%;\"border=\"0\"><tr><td class=\"estilo34\"><div align=\"center\">El registro del usuario se ha efectuado correctamente. <br> Seras redireccionado automaticamente.</div></td></tr></table>";
  }
  
mysql_free_result($result);
  }
  else
  {
  echo 
"<META HTTP-EQUIV=\"refresh\" CONTENT=\"2; url=fusuarios.php\">";
echo 
"<table style=\"height:100%;width:100%;\"border=\"0\"><tr><td class=\"estilo34\"><div align=\"center\">Debes rellenar como mínimo el Nick y el Password. <br> Seras redireccionado automaticamente.</div></td></tr></table>";
   }
  
mysql_close();
  
?>
Como veis, ya he remplazado caracteres. Ahora que más medidas de seguridad debería aplicar? Mysql_real_escape_string?

O si es mejor el HTMLEntities, que el str_replace... Como debería quedar?

Un saludo.