2012-01-11 12 views
9

Sono uno sviluppatore Java che si sta dirigendo verso la strada che porta a App Security, e mi sono imbattuto nell'organizzazione OWASP e nella sua API Java associata, ESAPI.Java Security vs. ESAPI

In un'altra domanda che ho chiesto su questo sito mesi fa, mi è stato fatto notare che ESAPI è uno dei principali attori nel settore delle app open source.

Quello che mi chiedo ora è, sono sicuro che ESAPI si sovrappone al modello di sicurezza Java integrato (con radice a javax.security.auth) nelle aree di autenticazione/autorizzazione e forse in altre aree. Ma ci sono aree di app sec che ESAPI chiaramente indirizzi che non possono essere raggiunti se si aderisce strettamente con l'API di sicurezza Java?

Fondamentalmente, sto chiedendo se ha senso per me imparare ESAPI se tutti i suoi vantaggi/funzionalità sono già coperti in alcune API Java esistenti. Grazie in anticipo!

risposta

7

AFAIK, ESAPI utilizza anche l'API java e aggiunge wrapper specifico per le minacce del mondo reale. Ad esempio, WAF (web application firewall), per raggiungere questo obiettivo utilizzando l'API Java, si finirà di scrivere molto codice, che è stato fatto da ESAPI e ben impacchettato come API, quindi, ora se si desidera eseguire i controlli WAF, è possibile implementalo con un paio di chiamate di metodo.

In parole semplici, ESAPI è qualcosa come la libreria di wrapper (java API integrata), che riduce la reinvenzione della ruota e aiuta a contrastare le minacce alla sicurezza del mondo reale.

Se vedi questo URL ESAPI API, puoi facilmente identificare in che modo ESAPI ha sviluppato API per neutralizzare ogni possibile minaccia.

+0

Grazie thinksteep! Questo significa che utilizzando ESAPI nella sua massima estensione, non avrei bisogno di implementare o configurare alcun elemento specifico dell'API Java, come un SecurityManager?Fondamentalmente, sto chiedendo se l'uso di ESAPI può coprire tutte le basi fornite dal modello di sicurezza integrato di Java. Grazie ancora! – IAmYourFaja

+0

Si può finire con la configurazione ESAPI. Ricorda che non puoi assolutamente evitare configurazioni. Questi sono i parametri di guida per qualsiasi software. – kosa

2

Ho solo una passata familiarità con Java e ESAPI, essendo uno sviluppatore .NET. Tuttavia, come uno sviluppatore rabbiosamente paranoico con un'attenzione particolare alla scrittura di codice sicuro (perché ho scritto cose davvero terribili) è qualcosa che ho guardato.

A mio parere, vale assolutamente la pena di imparare questo. È assolutamente possibile scrivere un buon codice senza questi pacchetti, ma l'uso di questi pacchetti semplifica la scrittura di codice.

Sul lato .NET, abbiamo qualcosa di simile che uso: la libreria Microsoft Patterns and Practices. Da quello che ho capito l'ESAPI Java ha uno scopo simile, che è questo:

Esso fornisce una serie di facili da usare metodi che già utilizzano le migliori pratiche sotto il cofano, in modo che non si devi preoccuparti così tanto

Ad esempio (e questa è solo una piccola parte di ciò che serve per scrivere applicazioni sicure), utilizzando ADO.NET e Java è molto facile scrivere istruzioni SQL contendendo l'input dell'utente in stringhe (errate) ed è anche solo come query parametrizzate facili da usare (buone). Utilizzando le API, vengono esposti i metodi che utilizzano i buoni schemi sotto il cofano. è più facile ottenere rapidamente un nuovo sviluppatore e assicurarti di non essere "sciatto" mentre ti consente di scrivere meno codice.

+0

Grazie per l'ottima risposta Dave! Per favore vedi il mio commento sotto la risposta di @ thinksteep - Ho la stessa domanda per te! Grazie ancora! – IAmYourFaja

+0

Non posso rispondere in modo specifico a questo commento, ma in generale non credo che coprirà tutte le basi per voi. Nessuna struttura è perfetta o copre tutto. Lo vedo come un buon strumento da avere nel tuo set di strumenti. Dipende da te essere colui che impara a maneggiare gli strumenti con abilità. Ciò significa scavare e imparare da soli l'ESAPI per trovare risposte del genere. In pratica stavo rispondendo alla tua domanda finale: "se per me ha senso imparare ESAPI" – David

3

Uno dei vantaggi/punti di forza di ESAPI sono le funzionalità di convalida dell'input e di disinfezione degli output, che, AFAIK, le classi di sicurezza Java attualmente non affrontano. ESAPI si rivolge in modo specifico al dominio di sicurezza delle applicazioni Web, ed è qui che eccelle.