Aquí dejo una función realizada en PHP para encriptar cadenas y así mantener un poco la seguridad de nuestras aplicaciones al pasar parámetros en las urls. La idea es encriptar el valor de identificadores sensibles ?id=123 para que estas no estén expuestas en bruto; posterior a eso desencriptarla al ser recibida tras un $_REQUEST. Todo esto utilizando base64.
Función de encriptado:
function encrypt($string, $key) { $result = ''; for($i=0; $i<strlen($string); $i++) { $char = substr($string, $i, 1); $keychar = substr($key, ($i % strlen($key))-1, 1); $char = chr(ord($char)+ord($keychar)); $result.=$char; } return base64_encode($result); }
Función de desencriptado:
function decrypt($string, $key) { $result = ''; $string = base64_decode($string); for($i=0; $i<strlen($string); $i++) { $char = substr($string, $i, 1); $keychar = substr($key, ($i % strlen($key))-1, 1); $char = chr(ord($char)-ord($keychar)); $result.=$char; } return $result; }
El esquema:
$sql="SELECT * FROM usuarios"; $can=mysql_query($sql); while($dato=mysql_fetch_array($can)) { $nombre = $can['nombre']; $id = $can['id']; } $id_encriptada = encrypt($id,"mi_llave"); echo "<a href='view.php?id=$id_encriptada'>Ver $usuario</a>";
Por ejemplo aquí en vez de pasar view.php?id=123 podría pasar view.php?id=olakase. Así mantendríamos resguardada la id original de la base de datos.
Al otro lado en view.php
$id_recibida = $_REQUEST[id]; $id_desencriptada = decrypt($id_recibida,'mi_llave'); $sql = "SELECT * FROM usuarios id = '$id_desencriptada';
Aquí ya podríamos realizar la consulta con la id original.
0 comentarios:
Publicar un comentario