Alla ricerca di esperienza con controlli incorporati e personalizzati.
Non ho bisogno di riferimenti a analizzatori di codice sorgente commerciali.
Alla ricerca di esperienza con controlli incorporati e personalizzati.
Non ho bisogno di riferimenti a analizzatori di codice sorgente commerciali.
Per avere un set di regole più completo, puoi utilizzare il plugin FindBugs Trova i bug di sicurezza . Include 36 nuovi rilevatori. Ovviamente, il plugin genera alcuni falsi positivi, ma puoi sempre disabilitare specifici rivelatori.
Disclaimer : sono l'autore della menzione dello strumento
checkstyle controlla il codice in base agli standard di codifica: puoi utilizzare lo standard Sun / Oracle o utilizzare il tuo. In realtà non trova le vulnerabilità in quanto tali, ma le vulnerabilità saranno più difficili da trovare se il codice non segue gli standard di codifica.
Findbugs troverà injection sql, password del database hard-coded, vulnerabilità del codice XSS, creazione di cookie errata e quel tipo di cose. È personalizzabile in modo da poter aggiungere più regole da solo o da un'altra parte.
comunque. questa è solo una parte della storia. A mio avviso, il vero vantaggio dell'utilizzo di checkstyle, pmd e findbugs è che è possibile visualizzare visivamente i risultati utilizzando lo strumento open source Sonar . Questo ti darà una panoramica della qualità del codice in modo da poter accumulare risorse per risolvere il peggior codice offensivo. Ti permette di ingrandire visivamente ogni biblioteca e poi di tornare a casa nei peggiori trasgressori. Questo è particolarmente utile per progetti di grandi dimensioni o in cui ci si basa su vari team di sviluppo.
Nessuno, checkstyle è per la formattazione del codice e le regole di coesione / accoppiamento chechking sul codice. Cioè nessun file dovrebbe essere più lungo di, nessun metodo può essere più lungo di ecc. Come findbugs cerca errori software comuni, non specifici per la sicurezza. I controlli comuni sono vars inutilizzati, condizioni ommite e così via. È piuttosto difficile controllare il software per i problemi di sicurezza, eccetto che per il comune B / O. E gli analizzatori statici sono limitati nella loro funzionalità.
In termini di vulnerabilità del codice mobile (vale a dire dove si sta tentando di garantire che il codice attendibile possa essere utilizzato in sicurezza da un codice meno affidabile, tipicamente scaricato dinamicamente sul web), FindBugs trova alcune vulnerabilità statiche mutabili. Esegue alcuni over-report a causa della mancata comprensione della proprietà di sicurezza "package.access"
. È molto sotto i report perché non è molto utile rilevare quando una statica mutabile nascosta dai modificatori di accesso (o package.access) è indirettamente accessibile, sebbene sia leggermente migliorata in quell'area.
Penso che ci siano alcuni tentativi di rilevare il calibro di SQL injection. IMO, se hai qualche vulnerabilità di iniezione sei in un posto molto brutto per cominciare.
Per quanto ne sappia, nessun analizzatore statico Java è molto più coposo del rilevamento statico mutabile di cui sopra. Quello e grep
( grep -R java.lang.reflect. .
, ad esempio). Detto questo, nella mia esperienza la qualità generale del codice è la base del software sicuro e gli analizzatori statici (incluso quello fatto dal tuo compilar) potrebbero avere una piccola parte da suonare.
Leggi altre domande sui tag java source-code code-review