Usando WebSQL con CryptoJS

Iniciado por Dedalo, Octubre 23, 2014, 04:01:49 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Me encontré que con la ayuda de nuevas funciones de javascript podemos hacer No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, algo muy similar a sqlite. El problema con este sistema, también conocido como No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, es que no tiene funciones de cifrado de información como tal. Entonces, decidí hacer un ejemplo de como implementar No tienes permitido ver los links. Registrarse o Entrar a mi cuenta con WebSQL para poder cifrar la data en las bases de datos.

Primer paso -> Importar AES:
Código: javascript
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>



Segundo paso -> Cifrar la data que queremos y crear (abrir) la base de datos que queremos usar:
Código: javascript
var encrypted = CryptoJS.AES.encrypt("estoesunaprueba", "password"); // Cifrar "estoesunaprueba" con AES usando "password" como Contraseña
var db = openDatabase('encripted', '1.0', 'Test DB', 2 * 1024 * 1024); // Nombre, Versión, Descripción, tamaño
var msg; // Crear variable msg



Tercer paso ->  Ejecutar lo correspondiente en la base de datos:
Código: javascript
db.transaction(function (tx) { // Empezar el proceso de la base de datos
tx.executeSql('CREATE TABLE IF NOT EXISTS PRUEBAS (id unique, prueba)'); // Crear la tabla
var secquery = 'INSERT INTO PRUEBAS (id, prueba) VALUES (1,"' + encrypted + '")'; // Poner la data cifrada en la base de datos
tx.executeSql(secquery); // Ejecutar el Query
msg = '<p>Data inserted in row.</p>'; // Crear mensaje de que la data fue ingresada
document.querySelector('#status').innerHTML =  msg; // Escribirlo
});



Cuarto Paso -> Cambiar de Hexadecimal a Ascii :
Código: javascript
function unhex(hexx) { // Esto es para cambiar de hex a ascii el contenido desencriptado del AES
var hex = hexx.toString();// forzar la conversión
var str = ''; // crear variable str
for (var i = 0; i < hex.length; i += 2) // moverse por la palabra de dos en dos
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); // sacar el texto de los hexadecimales
return str; // Mostrar el valor de STR
}



Quinto paso -> Sacar la data, descifrarla y mostrarla:
Código: javascript
db.transaction(function (tx) { // Empezar el proceso de la base de datos
tx.executeSql('SELECT * FROM PRUEBAS', [], function (tx, results) { // Query para sacar la data de PRUEBAS
msg = "<p> Data Found:</p>"; // Mensaje para el usuario
document.querySelector('#status').innerHTML +=  msg; // Escribir el mensaje para el usuario
msg = "<p><b>" + unhex(CryptoJS.AES.decrypt(results.rows.item(0).prueba, "password")) + "</b></p>"; // Obtener data de la BD - Mostrar mensaje descrifrado
document.querySelector('#status').innerHTML +=  msg; // Escribir mensaje descifrado
}, null);



El resto ya es poner el div llamado status para poder hacer que el código corra,  y listo muchachos, este es un ejemplo de como se puede usar WebSQL con CryptoJS para poder guardar data de manera segura.


¿Como lo usaría?

Imaginen poder hacer un script para escribir data sensible que deba ser guardada de manera urgente y lo puedan guardar en una base de datos en su navegador. Quiero ver si me da el tiempo para hacer una pequeña extensión de chrome para poder emular lo que digo.


Información útil:

Esto fue probado desde chromium en linux. Sin embargo, los navegadores modernos ya disponen de esto... (Firefox, Safari, Chrome). Para poder ver la base de datos y ver que el contenido si está cifrado pueden entrar a: ~/.config/chromium/Default/databases/ en caso de que estén usando su usuario por default de chromium

Si desean el script completo que hice pueden bajarlo de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta dándo click No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, los comentarios están en inglés, si no manejan mucho inglés, para comprender el código mejor mirar el de este tutorial.

Esta es la No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y Si tienen twitter y me pueden ayudar dando un RT este es el No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.


Saludos,
Dedalo.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta