Hvis du ligesom omkring 10 millioner andre mennesker er en Java-udvikler, vil du sandsynligvis vide, hvordan du holder Java-kode sikker. Udviklere skal altid være på toppen af tip og bedste praksis for at tackle Java-sikkerhedsproblemer.Java er det mest populære programmeringssprog i dag, med god grund. Java-koden er cross-platform. Java programmering er bredt undervist i universitetets datalogi afdelinger. Så mange ivrige øjne programmører går ind i deres første job klar til at kode i Java. Og Java ‘ s objektorienterede design gør det nemt at genbruge kode.
endnu, på trods af Java ‘ s popularitet, ville du være hårdt presset for at finde nogen, der ville hævde, at Java er det mest sikre programmeringssprog derude. Java-sikkerhedsproblemer er reelle. Java blev designet til at være så sikker som de fleste andre populære programmeringssprog, og det tilbyder funktioner som SecurityManager for at forbedre sikkerheden i visse sammenhænge. Java-applikationer er dog underlagt en række potentielle sikkerhedssårbarheder, herunder, men ikke begrænset til, forskellige injektionsangreb.
det er afgørende for Java-udviklere og administratorer at huske almindelige Java-sikkerhedssårbarheder, når de skriver og implementerer Java-applikationer. Sikkerhed-første programmering er især vigtig i tilfælde af Java, fordi Java-kodens tværplatformskarakter betyder, at sikkerhedsrammer på OS-niveau ikke altid kan stole på at holde applikationer sikre.
Du bør heller ikke forvente, at slutbrugere kan håndtere Java-sikkerhedstrusler effektivt. Sikker på, at du kan bebrejde dine brugere for at køre Java-kode, der ikke er tillid til, eller deaktivere automatiske opdateringer til deres Java-driftstider, men i sidste ende ligger byrden ved at skrive sikre Java-applikationer og isolere kode i et Java-miljø, der måske ikke er sikkert, hos udviklere.
almindelige Java-sikkerhedsproblemer
Java-programmører skal huske følgende sikkerhedsudfordringer, når de designer og skriver Java-applikationer.injektioner opstår, når en angriber indsætter ondsindet forespørgselskode i en formular. Hvis applikationen ikke registrerer den ondsindede kode og overfører den til en database, kan databasen ændres på en skadelig måde, eller følsomme data kan blive udsat for uautoriserede parter.
spredningen af automatiserede værktøjer til injektioner gør angreb på injektioner til en udbredt sikkerhedsudfordring for Java-applikationer og for den sags skyld stort set enhver anden type applikation, der muligvis opretter forbindelse til en database i dag.
løsningen på KKL-injektionsangreb i Java er enkel nok: Sørg for, at din app validerer input korrekt og forhindrer, at ondsindet kode føjes til data, der allerede er accepteret i en formular. Som en generel regel og hvor det er muligt, undgå dynamiske forespørgsler for at mindske risikoen for at få injektioner i Java-applikationer. Java ‘ s PreparedStatement class kan også være nyttigt for at forhindre angreb.
Java LDAP-injektioner
Injektionsangreb, der udnytter letvægts Directory Access Protocol (LDAP) – udsagn, repræsenterer et andet almindeligt angreb på Java-applikationer. Her er inputvalidering igen nøglen til at forhindre angreb.især kan Java-udviklere modvirke de fleste typer LDAP-injektionsangreb, hvis de undgår LDAP-specialtegn.
andre typer Java-injektionsangreb
Vi har allerede dækket kvm-injektioner og LDAP-injektioner, men injektionsangreb i Java-applikationer slutter ikke der. Forbindelsesstrengsinjektioner, Cross-site scripting-injektioner og andre typer angreb er alle mulige.disse typer angreb gælder ikke for alle Java-applikationer-f.eks. er det kun en alvorlig risiko med internetapplikationer-men de er endnu en påmindelse om, hvorfor inputvalidering er så vigtig.
SecurityManager sårbarheder
SecurityManager er designet, så du kan køre untrusted bytecode sikkert i Java-applikationer. SecurityManager sandkasser bytecode for at forhindre angreb.
dette gør SecurityManager en stor ressource for Java-sikkerhed-forudsat, selvfølgelig, at det fungerer korrekt. Den største risiko for SecurityManager er historien om sikkerhedssårbarheder, der er opstået i SecurityManager selv. Disse sårbarheder tillader undertiden isoleret kode at bryde ud af sandkassen og udføre angreb.
i et omfang er styring af SecurityManager-og Java-sikkerhedsproblemer et problem ikke for udviklere, men for systemadministratorer, der skal holde Java-driftstider opdaterede. Udviklere kan dog gøre deres del og undgå sandkasser, når det er muligt. Med andre ord, stol ikke blindt på SecurityManager. Hvis du skal bruge det i et program, skal du bruge det. Men hvis du kan opnå den funktionalitet, du har brug for uden den, skal du mindske Java-sikkerhedsrisici og undgå den.
ondsindede krukker
Når en Java-applikation indlæser krukker ved kørsel, kan en hacker undertiden narre applikationen til at forbinde ondsindede krukker. Dette er et gammelt sikkerhedsproblem, og Java har indført en række kontroller gennem årene for at forhindre det.
nogle af disse angrebsbegrænsende funktioner virker på egen hånd, men udviklere kan drage fuld fordel af dem ved at underskrive krukker. På den måde verificeres underskrifter ved kørsel og forhindrer indtrængen. Programmører kan også afbøde truslen fra ondsindede krukker ved at begrænse adgangsrettigheder for bestemte klasser, så, hvis ondsindet kode er indlæst, naturlige sikkerhedspolitikker begrænser den skade, ondsindet kode kan gøre.