Está usted en Indice > Construcción > Lenguajes > PHP > Lecciones y Paso a Paso > Información Encriptada en la DB Oracle (PHP)
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Información Encriptada en la DB Oracle (PHP)

En días recientes me encontré con la necesidad de crear una aplicación donde todos los datos deberían estar encriptados dentro de la Base de Datos, bueno casi todos, pues los campos de las llaves no los encripte, por razones lógicas.  La aplicación mencionada tenia que ser desarrollada con PHP+Oracle, a continuación el detalle de la solución final a la que llegue.

Lo primero con lo que me enfrente fue con la búsqueda de una función para encriptar desde PHP, por razones de comodidad decidí bajar una  clase de www.phpclasses.org
Había otras opciones como la de usar alguna función de mcrypt o crypt de PHP, pero para ambas necesitaba recompilar PHP, evitando esto opte por la solución mencionado.
La clase que decidí usar es una que lleva por nombre Cast128. Sin embargo después me enfrenté a otro problema y era que si ingresaba los datos a la Base de Datos de forma encriptada y necesitaba realizar alguna consulta, las operaciones se realizaban sobre los datos con encriptación.

Ejemplo: SELECT nombre FROM mi_tabla ORDER BY nombre

Lo que me hacia era ordenar por los nombres, pero encriptados!! lo cual no era lo que esperaba, es decir si tenia a Carlos y a Luis, no necesariamente ponía primero a Carlos, pues esto dependía de que la cadena de encriptación de Carlos iniciara con un caracter "menor" que el de la cadena de encriptación de Luis.
Entonces me di cuenta que iba por mal camino y decidí mejor optar por otro método: No encriptar nada desde PHP, sino que la encriptación la haría en la Base de Datos, para ello cree dos funciones en Oracle, una para encriptar y una para desencriptar y simplemente cada vez que hacía una inserción, colocaba la función"encriptar" junto a cada campo y si lo que hacia era una consulta, colocaba la función desencriptar, esto también en los WHERE, ORDER BY y mas.

Entonces mi solución final fue esa y me esta funcionando muy bien, ante la necesidad que tenia.

Ejs:
Para consultar:
SELECT DESENCRIPTA(nombre) FROM mi_tabla ORDER BY DESENCRIPTA(nombre)
Y para insertar:
INSERT INTO mi_tabla(nombre) VALUES(ENCRIPTA('Luis'));

Aclaro que en mi caso la necesidad era la de tener toda la información encriptada en la Base de Datos y no era el que la información viajara encriptada a través de la red.




Autor: Luis Rodríguez
http://www.programacion.com/blogs/60_php_land/archive/620_informacin_encriptada_en_la_db_oracle_php.html

Usuarios que han visto este tema también han visto...

- Envio de formulario de contacto con PHP
- Captcha: Diferenciando automaticamente humanos de maquinas con PHP
- Como proteger carpetas web con PHP
- Introducción y Sintaxis Básica
- Insertar el contenido de un formulario en una base de datos MySQL con PHP


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad






Cursos de Community Manager

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2011 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 13-02-2012 a las 08:40:11