Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/03/2014, 18:45
matiD
 
Fecha de Ingreso: octubre-2008
Mensajes: 85
Antigüedad: 15 años, 7 meses
Puntos: 0
Duda sobre seguridad al enviar datos por POST

Como están? luego de ya tener saldada una duda por parte de Heli0s a quien agradezco enormemente, al final del otro tema le hice una consulta referente a como tomar correctamente los valores que envío por post y asignarselo a los atributos de una clase.

Heli0s me hablo sobre la seguridad, podrían decirme donde empezar a leer sobre como hacer la recepción de los parametros enviados por post para asignarselos a los atributos de la clase de manera segura?

En lo personal tengo un formulario en html obviamente

Código HTML:
Ver original
  1. <form method="post">
  2.     <ul>
  3.          <li>
  4.                  <label for="usn">Usuario : </label>
  5.                  <input type="text" maxlength="20" required autofocus name="usuario" />
  6.          </li>
  7.  
  8.          <li>
  9.                  <label for="passwd">Contraseña : </label>
  10.                  <input type="password" maxlength="20" required name="pass1" />
  11.          </li>
  12.          
  13.          <li>
  14.                  <label for="confpasswd">Confirmar Contraseña : </label>
  15.                  <input type="password" maxlength="20" required name="pass2" />
  16.          </li>
  17.  
  18.          <li>
  19.                  <label for="nombr">Nombre : </label>
  20.                  <input type="text" maxlength="20" required name="nombre" />
  21.          </li>
  22.          
  23.          <li>
  24.                  <label for="apell">Apellido : </label>
  25.                  <input type="text" maxlength="20" required name="apellido" />
  26.          </li>
  27.  
  28.          <li>
  29.                  <label for="mail">mail : </label>
  30.                  <input type="email" maxlength="50" required name="mail" />
  31.          </li>
  32.          
  33.          <li>
  34.                  <label for="localid">Local : </label>
  35.                  <input type="text" maxlength="20" required name="localid" />
  36.          </li>
  37.  
  38.          <li>
  39.                  <label for="tipousr">Tipo de Usuario : </label>
  40.                  <input type="password" maxlength="50" required name="tipousr" />
  41.          </li>
  42.          <li class="buttons">
  43.                 <input type="submit" name="login" value="Crear Usuario" />
  44.          </li>
  45.  
  46.     </ul>
  47. </form>

Que envía dichos datos por post y son utilizados en la siguiente clase

Código PHP:
Ver original
  1. class Usuarios
  2. {
  3.     public $idusuario = null;
  4.     public $usuario = null;
  5.     public $pass = null;
  6.     public $nombre = null;
  7.     public $apellido = null;
  8.     public $mail = null;
  9.     public $tipousuario = null;
  10.     public $idlocal = null;
  11.     public $esadmin = null;
  12.     public $puntos = null;
  13.     public $salt = null;
  14.    
  15.     public function __construct($datos = array())
  16.     {
  17.         if (isset($datos['usuario']))
  18.         {
  19.             $this->usuario = stripslashes(strip_tags($datos['usuario']));
  20.         }
  21.         if (isset($datos['pass']))
  22.         {
  23.             $this->pass = stripslashes(strip_tags($datos['pass']));
  24.         }
  25.     }
  26.    
  27.    
  28.     public function loginUsuario()
  29.     {... 63 lines }
  30.    
  31.     //Funcion de registro de usuarios
  32.     public function registraUsuario()
  33.     {
  34.         $success = false;
  35.         try
  36.         {
  37.             //Tomamos los valores del post
  38.             $this->usuario = $_POST['usuario'];
  39.             $this->pass = $_POST['pass'];
  40.             $this->nombre = $_POST['nombre'];
  41.             $this->apellido = $_POST['apellido'];
  42.             $this->mail = $_POST['mail'];
  43.             $this->tipousuario = $_POST['tipousuario'];
  44.             $this->idlocal = $_POST['idlocal'];
  45.             $this->esadmin = $_POST['esadmin'];
  46.             $this->salt = generaSalt::crearSalt(45);
  47.            
  48.             //Nos conectamos a la base de datos
  49.             $con = new mysqli(DB_HOST, DB_USUARIO, DB_PASSWORD, DB_DATABASE);
  50.             //Preparamos el query SQL
  51.             $sql = 'INSERT INTO usuarios VALUES (usuario, contrasena, salt, nombre, apellido, mail, tipo_usuario, id_local)'
  52.                     . 'VALUES (?,?,?,?,?,?,?,?)';
  53.             //Creamos la sentencia preparada a utilizar
  54.             $pre = $con->prepare($sql);
  55.             $pre->bind_param('ssssssii', $this->usuario, $this->pass, $this->salt, $this->nombre, $this->apellido,  $this->mail, $this->tipousuario, $this->idlocal);
  56.             $pre->execute();
  57.            
  58.             $con->close();
  59.            
  60.             $success = true;
  61.            
  62.             return $success;
  63.            
  64.         } catch (Exception $ex) {
  65.             return $ex->getMessage();
  66.         }
  67.    
  68.     }
  69.    
  70.    
  71. }

Espero puedan darme una mano para hacer un sitio que tenga un poco de seguridad

desde ya muchas gracias a todos!