CSP Level 2: Defensa en profundidad para aplicaciones Web
-
Upload
caridy-patino -
Category
Technology
-
view
62 -
download
1
description
Transcript of CSP Level 2: Defensa en profundidad para aplicaciones Web
Caridy Patiño@caridy
github.com/caridy/csp
Content Security Policy (CSP)
Agenda !
- XSS - inyecciones más comunes - Técnicas de prevención (historia) - CSP Level 1 - CSP Level 2 - Demo - Concurso
XSS
Técnicas de prevención de inyecciones
Heurística
Code Review
Commit Hooks
Análisis de caja negra
Escaping Libraries
Template Engines
{{this.userValue}} vs
{{{this.configValue}}}
Handlebars Template Engine
{{this.userValue}} vs
{{dangerOfInjection this.configValue}}
Handlebars Template Engine
App Middleware
Browser middleware (traffic layer)
app layer
request modified request
Una capa de seguridad no es suficiente
CSP
- Protección contra XSS !
- Protección mecánica (no heurística) !
- Defensa en profundidad (redundancia)
¿Qué es CPS?
Interruptor Mecánico
“Content-Security-Policy” Header
Reglas- script-src: para los javascript. - connect-src: para los pedidos de XHR, WebSockets, etc. - font-src: para los web fonts. - frame-src: para los frames/iframes. - img-src: para imágenes. - media-src: para video y audio streams. - object-src: para flash y otros plugins. - style-src: para los stylesheets/css. - default-src: reglas por defecto.
“Content-Security-Policy” Header
vs
vs
Requiere compromiso(todos se rigen por las mismas reglas)
No hay distinción
Inline scripts no son permitidos
Inline scripts con “nonce” o “hash” son permitidos
Reporte de Violaciones CSP
Header
Beacon
http://caniuse.com/#search=csp
Desafios de CSP
SSL
Crear y mantener el whitelist es difícil
Habilitar reglas por default de CSP no es suficiente
Inline scripts
Penalidades de Desempeño
embedding widgets
• twitter por ejemplo te deja activar directivas de CSP es sus widget a través de un meta tag:
• <meta name=“twitter:widgets:csp” content=“on">
• https://dev.twitter.com/web/overview/widgets-meta-elements
Browser Plugins / Addons
Report Only Mode
“Content-Security-Policy-Report-Only”
Herramientas
npmjs.org/package/content-security-policy
caspr.io + enforcer
http://c0nrad.io/blog/csp.html
DEMO
Gracias
@caridy