Almacenamiento en navegador • Encriptado y desencriptado de la información con JavaScript • Web Cryptography API y soporte para navegadores • Librerías que permiten usar la mayoría de los algoritmos de cifrado(CryptoJS,SJCL) • Tools • OWASP guide
Almacenamiento en navegador • Encriptado y desencriptado de la información con JavaScript • Web Cryptography API y soporte para navegadores • Librerías que permiten usar la mayoría de los algoritmos de cifrado(CryptoJS,SJCL) • Tools • OWASP guide
compatibles en todos los navegadores • Hay mucha tendencia a utilizar el localStorage del navegador y un posible atacante podría utilizar esta información para extraer el contenido que se va guardando
un ataque MITM y con las herramientas adecuadas(sniffers tipo wireshark),se puede llegar a ver los datos. •SSLStrip • Esta herramienta permite convertir el tráfico HTTPS en HTTP
necesario cifrar los datos, pero si sufres un ataque MITM los datos quedan expuestos a un posible atacante. •Sería recomendable añadir una capa más de seguridad con alguna librería de crypto en javascript.
Almacenamiento en navegador • Encriptado y desencriptado de la información con JavaScript • Web Cryptography API y soporte para navegadores • Librerías que permiten usar la mayoría de los algoritmos de cifrado(CryptoJS,SJCL) • Tools • OWASP guide
•cipherText = the message after encryption, the data the adversary gets to see. •Key = the secret required to encrypt and decrypt the message •Encryption: ciphertext = f(key, message) •Decryption: cleartext = f(key, cipherText)
var iv = Random();// Vector de inicialización var aesEncryptor = CryptoJS.AES.createEncryptor(key, { iv: iv }); var ciphertext = aesEncryptor.process("Message"); var aesDecryptor = CryptoJS.AES.createDecryptor(key, { iv: iv }); var plaintext = aesDecryptor.process(ciphertext); </script>
KeySize); var PublicKey = CryptoJS.publicKeyString(RSAkey); var PrivateKey = CryptoJS.privateKeyString(RSAkey); var Encryption = CryptoJS.encrypt(“Message”, PublicKey); var Decryption = CryptoJS.decrypt(Encryption.cipherText, PrivateKey); </script>
Almacenamiento en navegador • Encriptado y desencriptado de la información con JavaScript • Web Cryptography API y soporte para navegadores • Librerías que permiten usar la mayoría de los algoritmos de cifrado(CryptoJS,SJCL) • Tools • OWASP guide
operaciones criptográficas. •Funciones hash •Algoritmos de clave pública y privada •Generación de firmas y verificación de datos •Cifrado y descifrado de mensajes
Almacenamiento en navegador • Encriptado y desencriptado de la información con JavaScript • Web Cryptography API y soporte para navegadores • Librerías que permiten usar la mayoría de los algoritmos de cifrado(CryptoJS,SJCL) • Tools • OWASP guide
Almacenamiento en navegador • Encriptado y desencriptado de la información con JavaScript • Web Cryptography API y soporte para navegadores • Librerías que permiten usar la mayoría de los algoritmos de cifrado(CryptoJS,SJCL) • Tools • OWASP guide
Almacenamiento en navegador • Encriptado y desencriptado de la información con JavaScript • Web Cryptography API y soporte para navegadores • Librerías que permiten usar la mayoría de los algoritmos de cifrado(CryptoJS,SJCL) • Tools • OWASP guide
la consulta. • Permitir a un atacante ejecutar código de forma arbitraria en el servidor. •Solución : Prepared statements $stmt = $mysqli->prepare( 'UPDATE users SET email = ? where id = 123'); $stmt->bind_param('s',$email);
Validar entradas mediante expresiones regulares •Validar que no estén modificando las cabeceras de la peticiones •Emplear frameworks que permitan el filtrado y la validación de los datos de entrada
envían por GET •Secuestrar cookies para utilizar una sesión con fines maliciosos •Emplear POST para enviar las peticiones y cifrar los datos más sensibles(login) •Emplear tokens de autenticación