Costa Rica JS

 

Seguridad en JavaScript

Quien Soy?

  • Alberto Cole
     
  • Web Architect | Capilleira 
     
  • Mobile | JavaScript
     
  • Move Fast And Break Things

Que esperar de la charla?

  • Conceptos de Seguridad Web
     
  • Implementación de esos conceptos en JavaScript
     
  • Librerías que implementan los conceptos
     
  • Verme fallar miserablemente escribiendo código en vivo

XSS

  • Scripts maliciosos
     
  • DOM
     
  • Vectores
     
  • Almacenado
     
  • Difícil de mitigar 
     
  • Ocurren en el servidor y en el cliente

XSS - Como mitigarlo?

  • eval() is evil
     
  • sanitize ('desinfectar' segun google translate x_X) 
     
  • filtrar HTML antes de imprimirlo 
     
  • toda entrada de datos al sistema deben ser verificados 
     
  • toda impresión de datos en el sistema deben ser filtrados

XSS - Libs

 

  • google-caja
     
  • https://www.npmjs.com/package/validator

HTTP Headers

X-XSS-Protection

  • XSS
     
  • Built-In

HTTP Headers

Strict-Transport-Security

  • Session Data
     
  • Man-In-The-Middle Attacks
     
  • SSL

HTTP Headers

X-Frame-Options

  • Clickjacking

HTTP Headers

X-Content-Type-Options

  • MIME sniffing
     
  • Drive by Download

HTTP Headers

Content-Length

  • DDOS

HTTP Headers

Content-Security-Policy

  • Evita varios ataques
     
  • De <<laboriosa>> Configuración

HTTP Headers

X-Powered-By

  • Opacidad

https://github.com/krakenjs/lusca

 

 

https://github.com/helmetjs/helmet

JWT

  • Mobile Ready
     
  • Token-Based
     
  • Seguridad en APIs
     
  • Control de Expiración 
     
  • Cookies vs. Tokens

JWT

  • Nonce / Heartbeat
     
  • Rápida Expiración
     
  • Blacklist
     
  • Replay Attacks 
     
  • XSS vs CSRF

JSHint

  • Detección de Errores
     
  • 'use strict';
     
  • Problemas potenciales
     
  • Código sin calidad es inseguro e infantil (por esta razón JS es tomado como un juguete). 
     
  • Vivir en Libertad tiene una gran responsabilidad

JSCS

  • "Every line of code should appear to be written by a single person, no matter the number of contributors." - @mdo
     
  • Promueve buenas prácticas de codificación en un equipo.
     
  • https://github.com/airbnb/javascript

Monitoreo de Aplicaciones

  • Memory Leaks
     
  • Clustering
     
  • Load Balance
     
  • DDOS
     
  • Fault Tolerance

Monitoreo de Aplicaciones

  • Forever.js
     
  • PM2
     
  • Strongloop ARC 

Links de Interes

  • https://www.owasp.org/index.php/List_of_useful_HTTP_headers
  • https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet
  • https://github.com/auth0/angularjs-jwt-authentication-tutorial
  • http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html
  • http://jwt.io/
  • https://auth0.com/blog/2014/01/27/ten-things-you-should-know-about-tokens-and-cookies/
  • http://jscs.info/overview.html
  • http://codeguide.co/
  • http://codingexplained.com/operating-systems/mac/installing-nginx-os-x-yosemite
  • http://strongloop.com/node-js/arc/
  • https://github.com/Unitech/pm2
  • http://lmgtfy.com/?q=google.com

Costa Rica JS

By Alberto Cole Palacios