Som du ser är vår webbplats inte anpassad för äldre webbläsare. Vi rekommenderar att du uppgraderar till en nyare webbläsare.
!!

Jobba på CERT-SE? Nu söker vi en förvaltningsledare IT inom cybersäkerhet med sista ansökningsdag 17 augusti, samt en administrativ stjärna med it-säkerhetskunskap till vår desk med sista ansökningsdag 23 augusti.

Uppdaterad | Publicerad

Kodstandard för säker Java

I veckan släppte CERT/CC "Java Secure Coding Standard".

"Java Secure Coding Standard" från CERT/CC är samling regler och rekommendationer för hur säker Java-kod skrivs. En standard för C och C++ har funnits sedan länge, och nu har alltså turen kommit till Java.

Varför behövs en standard för säker Java-kodning? Är inte Java ett säkert programmeringsspråk? Java är mycket säkrare än C och C++, mest beroende på att läsning och skrivning till godtycklig minnesposition inte tillåts. Dessvärre kan en programmerare göra bort sig i alla språk. En SQL-injektion kan till exempel förekomma i alla språk som har stöd för en relationsdatabas: C, Java, PHP, Perl, VBScript, Ruby, Python med flera. Vissa programmeringsspråk är inte konstruerade med säkerhet i åtanke och är därför lättare att bränna sig på, men alla språk bör ha riktlinjer hur de används säkert.

CERT/CC har en rätt vid definition av "säker kod", vilket gör att rekommendationer spretar något. Här är några kategorier med exempel:

  • Allmänna säkerhetsråd: Validera alltid indata.
  • Java-teknik: Tänk på att kompilerad Java-kod lätt kan dekompileras. Obfuskera därför gärna koden.
  • Sund objektorientering: Instansvariabler bör vara deklarerade "private".
  • Lättanvänd klientkod: Returnera en tom lista istället för null.
  • Kodkonventioner: Använd "L" istället för "l" då ett heltal av typen "long" ska skrivas ("l" förväxlas lätt med "1").
  • API-fällor: Använd inte write() för att skriva ut heltal.

Trots att råden spretar och i vissa fall känns ofärdiga är de definitivt värda en genomläsning. Även en erfaren Java-utvecklare kommer få några "ja just det"-upplevelser.

Många av reglerna och rekommendationerna går att verifiera med hjälp av statisk kodanalys. Följande två verktyg är bra:

  • FindBugs: Hittar potentiella buggar i koden. Fungerar många gånger genant bra.
  • CheckStyle: Kontrollerar att kodkonventioner följs. Finns även som Eclipse-plugin.

Mer information: