Seguridad Front-end
7/26/2020
XSS: Cross Site Scripting
Mecanismo
- El atacante crea un script malicioso
- Entra al front y mete el script en un form
- El script llega hasta el back y es guardado en el back
- El back sirve el malicioso y el browser cree que es bueno, tons ya valió.
Prevención
- Filtrar datos recibidos del front
- Codificar y sanitizar datos que el usuario pueda manipular y puedan ser enviados como respuesta. (DOMPurify, secure-filters)
- Usar http responses para cada tipo de dato: json, html, js, etc.Ejemplo:Evitar que un JSON sea encodeado como text/html para evitar ejecución accidental.
- Uso de Content Security Policy: solo sirve para prevenir scripts ajenos de origenes no deseados.
CSRF: Cross Site Request Forgery
Mecanismo
Cuando un usuario real se loguea a un servicio, el browser y la app tienen las cookies, y tokens de acceso. Estas se usan con peticiones al dominio de la app objetivo y se aprovechan las cookies ya generadas y existentes en el browser.
- Un usuario entra a su app:
- Atacante manda email con una imagen o link, con la petición maliciosa:
Usando GET: con un simple link o imagen
[GET] https://miApp.com/transfer.do?account=CUENTA_ATACANTE&amount=99999999 <!--Con link--> <a href="https://miApp.com/transfer.do account=CUENTA_ATACANTE&amount=99999999">
<!--Con imagen--> <img src="https://miApp.com/transfer.do account=CUENTA_ATACANTE&amount=99999999">
Usando POST: Con una página con una form falsa maliciosa
[POST] https://miApp.com/transer.do?account=CUENTA_ATACANTE&amount=99999999 <form action="https://miApp.com/transfer.do" method="POST"> <input type="hidden" name="account" value="MI_CUENTITA"/> <input type="hidden" name="amount" value="99999"/> <input type="submit" value="Ver fotos de perros" /> </form>
- El browser al tener las credenciales, pues ejecuta la petición sin problemas.
Prevención
- Crear una token random validada con el back. En la app para que sea enviada junto con cada petición desde la app hacia el back, y de este modo sabemos que si no viene dicha token, las peticiones no están siendo enviadas desde el front.
DOS Denial of Service
Mecanismo
Muchísimas peticiones en muy poco tiempo para que el servicio no pueda soportarlo y falle.
Prevención
- Captcha
- Flujos en distintas páginas
- Ingreso por OTP via email o con One Time Login Lnk