Cualquier dato puede ser almacenado en una cookie, pero es importante saber que lo que almacenamos puede tener un mal uso por terceros, por lo que debemos tomar los recaudos pertinentes.
Una manera de hacer un login automático puede ser guardar el nombre de usuario en una cookie y también la contraseña, cuando el visitante ingresa si las cookies están definidas y tiene contenido podríamos buscar en la base para validar estos datos y loguearlo automáticamente.
Esto sería una manera de hacerlo pero aquí se comprometen los datos del usuario de una manera grosera, la contraseña nunca puede ser guardada en un archivo de texto, cualquier con acceso físico a la computadora podría leer esta información.
Por lo tanto debemos tener en cuenta que es lo que deseamos guardar y tomar determinados recaudos a la hora de guardarlos, en el capítulo de seguridad en aplicaciones web veremos un poco más en detalle que y como guardarlo.
Archive for the ‘seguridad’ tag
Datos sensibles en cookie
Seguridad en los parámetros
La seguridad en los parámetros es un concepto muy viejo pero es muy efectivo.
Los ataques SQL Injection son más comunes de lo que uno piensa, por ende las cadenas de texto (SQL) que enviamos al motor de la base de datos deben, como mínimo, prevenir este tipo de ataques.
La forma más común en estos ataques es cuando ingresamos valores externos a nuestro código a la base de datos, es decir un parámetro que venga por POST o GET.
Sí enviamos el siguiente query a la base
<?php $query = "SELECT * FROM personas WHERE id = 5"; //envio el query ?>
no existe tal SQL Injection por que id = 5 será siempre id = 5 ya que esta embebido en nuestro código.
Un ejemplo diferente con una vulnerabilidad visible es el siguiente.
<?php $query = "SELECT * FROM personas WHERE id = " . $_GET['id']; //envio el query ?>
en este caso debemos prevenir que $_GET['id'] no contenga ningún código malicioso.
Cuando trabajamos con bases de datos Oracle tenemos a nuestro disposición la función oci_bind_by_name que realizará un blindaje sobre los parámetros, un metodología similar a stmt de mysqli.
<?php $conn = oci_connect("usuario", "contraseña", "localhost/XE"); if (!$conn) { $m = oci_error(); trigger_error(htmlentities($m['message']), E_USER_ERROR); } $sql = 'SELECT id,nombre,apellido FROM personas WHERE id = :id'; $stid = oci_parse($conn, $sql); $id = $_GET['id']; oci_bind_by_name($stid, ':id', $id); oci_execute($stid); $fila = oci_fetch_array($stid, OCI_ASSOC); print_r($fila); oci_free_statement($stid); oci_close($conn); ?>