Foros del Web » Programando para Internet » PHP »

¿Es seguro?

Estas en el tema de ¿Es seguro? en el foro de PHP en Foros del Web. ¡Hola a todos! Me quería aseguridad de que el registro de usuarios que he hecho es totalmente seguro, para ello he utilizado mysqli con sentencias ...
  #1 (permalink)  
Antiguo 31/07/2014, 16:39
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
¿Es seguro?

¡Hola a todos!

Me quería aseguridad de que el registro de usuarios que he hecho es totalmente seguro, para ello he utilizado mysqli con sentencias preparadas, además de unos sistemas de verificación contra ataques nuevos para mí.

He creado una función y algunas cosas que se me han ocurrido para todo esto, espero que esté bien seguro y si no lo está os agradecería que me añadierais algunos detalles si queréis por si se me ha saltado algo...

PD: La contraseña la encripto de forma segura con crypt() pero la he quitado para que no sepáis el algoritmo

Código PHP:
Ver original
  1. <?php
  2. $mysqli = new mysqli("localhost", "root", "", "redbuff");
  3. function clean($var, $type){
  4.     if($type == "interger"){
  5.         settype($var, "int");
  6.         $var = ereg_replace("[^0-9]", "", $var);
  7.     }elseif($type == "string"){
  8.         settype($var, "string");
  9.         $var = ereg_replace("[^a-zA-Z]", "", $var);
  10.     }elseif($type == "float"){
  11.         settype($var, "float");
  12.         $var = ereg_replace("[^0-9\-]", "", $var);
  13.     }elseif($type == "boolean"){
  14.         settype($var, "int");
  15.         $var = ereg_replace("[^0-9]", "", $var);
  16.     }elseif($type == "alpha"){
  17.         $var = ereg_replace("[^a-zA-Z0-9]", "", $var);
  18.     }
  19.     return $var;
  20. }
  21. $user = ''; $password = ''; $email = ''; $message = '';
  22. $user = clean($_GET['user'], "alpha"); $password = clean($_GET['password'], "none"); $email = ereg_replace("[^a-zA-Z0-9@\-_\.]", "", clean($_GET['email'], "none"));
  23. $sentencia = $mysqli->prepare("SELECT id FROM accounts WHERE user= ?");
  24. $sentencia->bind_param("s", $user);
  25. $sentencia->execute();
  26. $result = $sentencia->get_result();
  27. $num_user = $result->num_rows;
  28. $sentencia->close();
  29. $sentenciam = $mysqli->prepare("SELECT id FROM accounts WHERE email= ?");
  30. $sentenciam->bind_param("s", $email);
  31. $sentenciam->execute();
  32. $resultm = $sentenciam->get_result();
  33. $num_email = $resultm->num_rows;
  34. $sentenciam->close();
  35. if($num_user == 0 && $num_email == 0 && $user != '' && $password != '' && $email != ''){
  36.     $insertuser = $mysqli->prepare("INSERT INTO accounts(user, password, email) VALUES(?, ?, ?)");
  37.     $insertuser->bind_param('sss', $user, $password, $email);
  38.     $insertuser->execute();
  39.     $intertuser->close();
  40. }else{
  41.     if($email == '' || $user == ''){
  42.         $_SESSION['error'] = 'Te faltan datos';
  43.     }elseif($num_email == 0){
  44.         $_SESSION['error'] = 'Ese email ya existe';
  45.     }elseif($num_user == 0){
  46.         $_SESSION['error'] = 'Ese usuario ya existe';
  47.     }
  48. }
  49. //Fin del archivo

Muchas gracias,
Enrique.
  #2 (permalink)  
Antiguo 31/07/2014, 16:57
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: ¿Es seguro?

Dos cosas: Las funciones ereg_* están obsoletas a partir de PHP 5.3.0, en su lugar, debes de utilizar la funciones PCRE. Por otro lado, si estás usando la extensión mejorada MySQLi, deberías de usar la función mysqli_real_escape_string y no mysql_real_escape_string, que es la que veo que usas.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 01/08/2014, 06:22
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: ¿Es seguro?

Hola,

Muchas gracias Alexis, he tomado en consideración lo que me has dicho y ya he hecho todos los cambios.

Quería preguntar una cosa que no viene a cuento pero para no crear otro tema mejor lo pregunto aquí y quien sepa/quiera/pueda que me conteste y yo se lo agradecería. La duda es que mi página es internacional y quiero que si un inglés ve la hora desde su país le aparezca ajustada a su hora y no la del español que ha publicado el mensaje por ejemplo.

Yo publico el mensaje en España que son las 14:26 y que un canadiense en vez de ver las 14:26 que vea las 9:26, ¿con qué función podría hacer eso en PHP?

Gracias a todos.

Etiquetas: mysql, registro, select, 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 13:58.