JavaScript
The one-day JavaScript security training will cover the fundamentals of secure coding in javascript. We will teach the most important web vulnerabilities related to javascript from the perspective of the developer. They will learn how to find vulnerabilities during testing, how to recognize them within the source-code, how to avoid, and how to mitigate them. We will cover the security-related specialties of javascript, emphasizing some common pitfalls. We will reach an in-depth understanding of XSS, covering all types and flavors, focusing not only on the theory, but practicing on intentionally vulnerable applications and analyzing their source-code. We will raise awareness of several other js vulnerabilities, CSRF, OSRF, clickjacking, tabnabbing as well as some HTML5 related security problems. We will enlighten the significance of CSP and other security-related Http headers. Depending on the needs of the audience we can also present a brief security-evaluation of some popular js technologies (Angular, React).
On the two-days training we do more exercises, thereby deepening the understanding and the awareness of several topics. We can analyze specific technologies (Angular, React) in a more detailed manner. We also learn about some tools used by hackers and penetration testers.
If time and the structure of the audience allows, we can even finish the course by analyzing some of the audience’s own source code, trying to find vulnerabilities and putting into practice what we learned during the course. This can be part of the two-days workshop, or extended to an additional day (see Related courses below).
title: Secure development in Javascript
audience: senior/medior developers, lead devs, testers and security champions (mostly comprehensible for juniors as well)
duration: 2 days (12 hrs education time) in the standard case; the core is available in a 1 XL day (7 hrs), 3 days if combined with additional modules (see the Related courses below)
We assume that the developers attending the JS secdev course:
- are familiar with with the JS language
- understand the HTTP protocol and HTML
- are familiar with basic security features of an enterprise application (authentication, authorization, the concept of a session)
- DIY code and ASVS audit
- 'Into the middle of things' hands-on hacking
- Playing with untuned source code scanning
- Playing with identifying real threats and security requirements
- OWASP ASVS topics, an introduction to the areas to protect
- How a properly designed infrastructure architecture should be built
- Setting up the right security requirements
- Create and train security champions
- S-SDLC basics, secure development as integral part of SDLC
- Automatic tools and their values, non-automatic tools, pentests, peer code review, assisted code-review
- Injections: SQLi, XML injections, JSON, XPath, XSS, cookie injection, open redirection, http header injectionPath traversal, XXE, Buffer overflow, Zip bomb, Million laugh, RFI, Insecure file upload, Code execution
- Insecure direct object reference
- XSS (types, impact, causes, defenses, other html injections, BeEF)
- CSRF, Clickjacking, Same-origin policy, CORS
- Tabnabbing
- Input validation vs encoding
- Security logging, exception handling
- Threat modelling
- Separation of duties, trust boundaries, security boundaries, defence in depth, principle of least privilege, minimising the attack surface, risk driven mitigation
- Business logic vulnerabilities
- Cryptography basics
- TLS, ciphersuites
- HTTP certificate pinning
- Perfect forward secrecy, certificate transparency
- CSP, HSTS, Cookie settings, x-content-type-options
- Authentication principles, session management, authorization
- Access management in a RESTful environment (to JWT or not to JWT)
- OAuth2, OpenID Connect
- API security, design and implementation
- Web service security [optional]
- Attack surface
- Audit support (separate audit logs, managing debug logs)
- Intrusion detection, correct reactions
- Protecting the admin interface
Developed by Péter Nyilasy
- Automatic conversions
- Type safety
- Variable scopes
- Eval, setTimeout, etc,,,
- XSS
- Types (reflective, stored, dom-based, non dom-based)
- Dangerous js functions (Vanilla and jQuery)
- How to defend
- BeEF demo [*]
- Other html injections
- Open redirection
- Client side sqli [*]
- Cookie injection
- Web storage [*]
- WebSockets [*]
- Web Messaging [*]
- Webworkers [*]
- Iframe sandboxing
- CSP and other security headers
- ReactJS security [*]
- Angular security [*]
- JS obfuscation [*]
- Cryptography in JS [*]
[*] optional, delivered on demand
In delivering the course one or two of the following trainers are involved as lead trainer or co-trainer:
When it comes to the actual proposal we define who is supposed to do the delivery and in what formation or schedule.
Last modified 2yr ago