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