2. INDEX
• Introducción a la seguridad en aplicaciones web
• 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
3. INDEX
• Introducción a la seguridad en aplicaciones web
• 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
5. Browser storage
• Falta de funciones de criptografía que sean
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
6. Protocolo HTTPS
• La comunicación va cifrada, pero si sufrimos 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
7. Estado actual SSL
•En realidad si usas SSL no sería 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.
10. INDEX
• Introducción a la seguridad en aplicaciones web
• 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
12. AES
•Algoritmo de clave secreta compartida
•Simétrica
•Misma clave para cifrar y desencriptar
•Tamaños de clave 128,192,256 bits
13. AES
•message = the unencrypted, readable data we care
about.
•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)
14. AES en JavaScript
<script>
var key = CryptoJS.enc.Hex.parse('01010101'); // clave
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>
17. RSA
• Algoritmo de clave publica / privada
•Asimétrica
• Se encripta con la clave publica y se desencripta con la clave
privada
18. RSA en JavaScript
<script>
var KeySize=512;
var RSAkey = CryptoJS.generateRSAKey(“PassPhrase”, 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>
23. INDEX
• Introducción a la seguridad en aplicaciones web
• 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
40. INDEX
• Introducción a la seguridad en aplicaciones web
• 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
50. JavaScript and Web Cryptography
https://jswebcrypto.azurewebsites.net/demo.html
51. INDEX
• Introducción a la seguridad en aplicaciones web
• 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
66. INDEX
• Introducción a la seguridad en aplicaciones web
• 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
67. OWASP
•Organización que trata de mejorar la
seguridad de las aplicaciones web
•Incluye una lista de las 10 vulnerabilidades
más críticas
68. OWASP Top 10 Risks
Vulnerabilidades
• 1. SQL Injection
• 2. Broken auth and session management
• 3. Cross-site scripting(XSS)
• 4. Insecure direct object references
• 5. Security misconfiguration
• 6. Sensitive data exposure
• 7. Missing function level access control
• 8. Cross-site request forgery(CSRF)
• 9. Using vulnerable components
• 10. Unvalidated redirects and forwards
69. SQL injection
• Inyectar parámetros en la cadena que realiza 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);
70. Cross Site Scripting(XSS)
•Inyectar código malicioso mediante javascript
•Solución : 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
72. Cross Site Request Forgery(CSRF)
•Recoger credenciales del usuario que se
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