Geplaatst op 2 September 2009, 20:53 door Mylène Reiners
in java, open source, security
Iedereen heeft graag dat de code die hij gebruikt, veilig is. Degenen voor wie we software schrijven, willen hun gebruikers ook graag veilige software aanbieden.

PMD controleert je code ook op standaard fouten (mogelijke bugs, dode code, suboptimale code en té gecompliceerde code), en als je wilt (via CPD) op duplicate code - het zou immers vervelend zijn als je mogelijke bugs uit één stuk code haalt, en dat stuk dat je gekopieerd had, vergeet...
Share this | 426 keer bekeken | 0 reacties
Iedereen heeft graag dat de code die hij gebruikt, veilig is. Degenen voor wie we software schrijven, willen hun gebruikers ook graag veilige software aanbieden.
Hiervoor dient het hele ontwikkelproces, vanaf architectuur tot maintenance aangepast te worden. Voor ontwikkelaars gaat het dan al snel om secure of defensive programming.
Vervolgens moet bewezen worden dat je je doel bereikt hebt, dat is dan logischerwijs het testen van je code op security issues.
Wat dan overblijft, is het controleren van je code op security issues. Er zijn een paar goede (actuele) Java open source tools die je erbij kunnen helpen, maar eigenlijk maar verschrikkelijk weinig, als je bedenkt dat dit toch echt belangrijk is.
Soms is het zelfs zo, dat dit de enige security testen zijn die uitgevoerd mogen worden. Idealiter zou je nog penetratie testen (pentests) willen uitvoeren, maar krijg je daar geen toestemming voor.
De tools die je kunt gebruiken, zijn eigenlijk alleen PMD en FindBugs, misschien uit te breiden met ESC/Java2, al werkt dat op een heel andere manier.
In de literatuur kom je ook nog JLint en LAPSE tegen, en in een iets ander kader PQL en Bandera, maar deze zijn allemaal allang niet meer geüpdate, en, mijns inziens, daardoor niet echt relevant meer...
FindBugs controleert je code op een aantal zaken die tot problemen zouden kunnen leiden (overzicht). Tekenend voor het feit dat niet alles met "gewone" tools te vinden is, is bijvoorbeeld de volgende opmerking: "FindBugs looks only for the most blatant, obvious cases of cross site scripting. If FindBugs found any, you almost certainly have more cross site scripting vulnerabilities that FindBugs doesn't report. If you are concerned about cross site scripting, you should seriously consider using a commercial static analysis or pen-testing tool.".
FindBugs is onder meer beschikbaar als Eclipse plug-in, maar ik raad je aan zeker ook de FindBugs GUI eens te proberen.

Tips voor het gebruik van FindBugs en PMD
- Gebruik alleen die rulesets die je nodig hebt - maak het niet ingewikkelder dan nodig is (maar uiteraard wel zo ingewikkeld als nodig is...)
- Integreer de tools met je IDE, zodat je je fouten zo snel mogelijk ziet (op het einde van het project is het misschien zo enorm veel, dat je nooit meer zin hebt om je fouten op te lossen, met alle kwalijke gevolgen van dien!)
- Integreer de tools in je buildproces - soms worden fouten pas gevonden in combinatie met andere code...
ESC/Java2 checkt je code ook op mogelijke fouten; je kunt regels (via JML) toevoegen aan je code, of in een aparte file (wat wel zo handig is om je code "clean" te houden); dit lijkt enigszins op het "uitzetten" van rules in PMD. Grootste minpunt is dat het alleen draait op Java 1.4. Wat wél heel mooi is, is dat je aan moet geven, dat je over bepaalde zaken hebt nagedacht.
Je kunt bijvoorbeeld een foutmelding krijgen over een "possible null dereference" -- in dat geval geef je een regel (pragma): /*@ non-null */ op dat veld, waarmee je aangeeft dat dat veld geen null kan zijn (en dat die fout dus genegeerd kan worden) - uiteraard ervan uitgaand dat je dan ook gecontroleerd hebt dat dat zo is.
Je kunt bijvoorbeeld een foutmelding krijgen over een "possible null dereference" -- in dat geval geef je een regel (pragma): /*@ non-null */ op dat veld, waarmee je aangeeft dat dat veld geen null kan zijn (en dat die fout dus genegeerd kan worden) - uiteraard ervan uitgaand dat je dan ook gecontroleerd hebt dat dat zo is.
Ik heb het idee dat als ESC/Java2 naar een nieuwe versie gaat (die Java 1.5 en hoger ondersteund) ESC/Java2 een goede aanvulling op onze standaard toolkit zou kunnen zijn - ik zal het in de gaten houden :)
Enjoy!
Share this | 426 keer bekeken | 0 reacties
Reageer
Top artikelen




