Un'altra descrizione di Kevin Wall su Devo usare ESAPI?
If you are starting out on a new project or trying for the first time to secure an existing project, then before you consider ESAPI, you should consider these possible alternatives:
- Output encoding: OWASP Java Encoder Project
- General HTML sanitization: OWASP Java HTML Sanitizer
- Validation: JSR-303/JSR-349 Bean Validation
- Strong cryptography: Keyczar
- Authentication / authorization: Apache Shiro
- CSRF protection: OWASP CSRFGuard Project or OWASP CSRFProtector Project
Note that this is not to suggest that ESAPI is dead, but rather to acknowledge the fact that it isn't being as well-maintained as most F500 companies would like for their enterprise software.
IMO se hai l'opzione che dovresti utilizzare framework come Spring, che ha le strutture per gestire molti problemi di sicurezza (ad es. Spring Security per l'autenticazione, CSRF). Per l'output, ancora molte strutture / librerie moderne si occupano della codifica. Per esempio. con JSP, quindi usa JSTL - ha una libreria di tag per la codifica HTML. Se stai sviluppando rich client, framework come React codificheranno in HTML per impostazione predefinita.
Uno scenario in cui ESAPI rimane utile è se si sta aggiornando un'applicazione legacy che non ha sicurezza. Anche allora, ESAPI ha abbastanza problemi aperti / vulnerabilità che dovrebbero darti una pausa. È un triste stato di cose e Kevin Wall si rivela un po 'amaro:
The first question to ask is, are you already using ESAPI in your project, and if so, do you have a lot vested in it? If so, then the answer to "Should I use ESAPI?" probably is "yes". The second question you should ask, if I'm using it, why am I not contributing to it in some manner? But we won't go there.