Seguretat
La seguretat lògica (del programari) i activa (preventiva) en el desenvolupament: com dissenyar i programar un sistema perquè sigui difícil d’atacar. Fa servir les eines de Criptografia i protegeix serveis com els de Sòcols i serveis.
Un sistema és segur si en cuidem aquests aspectes, de més a menys significatius:
- Disponibilitat: els usuaris poden accedir a la informació quan la necessiten.
- Confidencialitat: només hi accedeix qui hi està autoritzat.
- Integritat: les dades no pateixen modificacions no autoritzades.
- Autenticació: es verifica la identitat de qui hi accedeix.
- No repudi: ni l’emissor ni el receptor poden negar haver participat en una comunicació.
Com llegir aquests documents
Els documents van dels principis a les tecnologies concretes:
- Disseny segur. La seguretat es decideix al principi, no s’afegeix al final. Aquí hi ha els criteris de disseny, les pràctiques de codificació, com verificar el codi, l’OWASP Top 10 i una llista de verificació. Remet sovint als altres dos documents.
- Control d’accés. Registre, autenticació i autorització d’usuaris. Va a part perquè és on els errors de disseny tenen més impacte: una criptografia perfecta no salva una mala gestió de sessions.
- Tecnologies, protocols i pràctiques. No és una etapa sinó material de consulta, organitzat en àrees independents: autenticació, seguretat web, pagaments, APIs, desenvolupament modern i aplicacions mòbils. Es llegeix per seccions, quan el projecte ho demana.
flowchart TD
D["Disseny segur"] --> C["Control d'accés"]
C --> T["Tecnologies, protocols i pràctiques"]
D -.-> T
Principis
- Disseny segur: criteris de disseny, pràctiques de codificació, verificació del codi, OWASP Top 10 i llista de verificació
- Control d’accés: registre, autenticació i autorització d’usuaris
Consulta
- Tecnologies, protocols i pràctiques: autenticació amb sessions i tokens, seguretat web i d’APIs, pagaments en línia, seguretat en el desenvolupament i en aplicacions mòbils
Referències
Seguretat:
- Security Features in Java SE (The Java Tutorials)
- Secure Coding Guidelines for Java SE
- Security by design (Wikipedia)
- Application Security (Wikipedia)
- SEI CERT Oracle Coding Standard for Java
- Top 10 Secure Coding Practices
- Secure Programming for Linux and Unix (Java specific)
- How to Learn Penetration Testing: A Beginners Tutorial
- OWASP Proactive Controls
- OWASP API Security Project
- PCI Security Standards Council
- Qüestionaris d’autoavaluació PCI DSS (SAQ)
- Canvis al SAQ A per a comerç electrònic (PCI SSC)
- Role-based access control (Wikipedia)
- Please, stop using local storage
- HTTP headers for the responsible developer
- How to Use Local Storage with JavaScript
- Advanced API Security (Llibre)
- How secure is Java compared to other languages?
- The Rule Of 2
- Programming With Assertions
Autenticació / autorització:
- HTTP Authentication
- Session vs Token Based Authentication
- The Web Authentication Guide Cheatsheet
- JWT, JWS and JWE for not so dummies!
- Java Authentication with JSON Web Tokens (jjwt)
- Tutorial: Create and Verify JWTs in Java
- Refresh Tokens: When to Use Them and How They Interact with JWTs
- Attacking JWT authentication
- Token based authentication made easy
- Getting Token Authentication Right in a Stateless Single Page Application
- Stateless Sessions for Stateful Minds: JWTs Explained and How You Can Make The Switch
- Web Security for SPAs
- Webauthn guide
- An Introduction to OAuth 2
- OAuth 2.0 clients in Java programming, Part 1, Part 2 i Part 3
- LDAP Security
- REST Security Cheat Sheet (OWASP)
- Password Storage Cheat Sheet (OWASP)
- Cryptographic Storage Cheat Sheet (OWASP)
- REST API Security Essentials