Pokud, stejně jako asi 10 milionů dalších lidí, jste vývojář Java, pravděpodobně budete chtít vědět, jak udržet kód Java v bezpečí. Vývojáři budou vždy muset zůstat na vrcholu tipů a osvědčených postupů k řešení problémů zabezpečení Java.
Java je dnes nejoblíbenějším programovacím jazykem, a to z dobrého důvodu. Java kód je multiplatformní. Programování v Javě je široce vyučováno na univerzitních katedrách informatiky. Tolik dychtivých programátorů chodí do svých prvních zaměstnání připravených kódovat v Javě. Objektově orientovaný design Java usnadňuje opětovné použití kódu.
přesto, navzdory popularitě Javy, byste těžko hledali někoho, kdo by tvrdil, že Java je nejbezpečnější programovací jazyk. Problémy s bezpečností Java jsou skutečné. Java byl navržen tak, aby byl stejně bezpečný jako většina ostatních populárních programovacích jazyků a nabízí funkce jako SecurityManager, které pomáhají zlepšit zabezpečení v určitých kontextech. Java aplikace však podléhají řadě potenciálních bezpečnostních chyb, včetně, ale bez omezení, různých injekčních útoků.
je důležité, aby vývojáři a administrátoři Java měli při psaní a nasazení Java aplikací na paměti běžné bezpečnostní chyby Java. Bezpečnost-první programování je důležité zejména v případě, Java, protože cross-platform přírodě Java kód znamená, že OS-zabezpečení na úrovni rámců může být vždy důvěryhodný, aby aplikace bezpečnější.
neměli byste očekávat, že koncoví uživatelé budou schopni efektivně spravovat bezpečnostní hrozby Java. Jistě, můžete vinit vaši uživatelé pro běh nedůvěryhodný kód v jazyce Java nebo vypnutí automatické aktualizace Java runtime, ale nakonec, břemeno psaní bezpečných aplikací Java a oddělovací kód v Java prostředí, které nemusí být bezpečné leží s vývojáři.
běžné problémy se zabezpečením Java
programátoři Java by měli mít při navrhování a psaní Java aplikací na paměti následující bezpečnostní výzvy.
SQL injekce
SQL injekce se vyskytují, když útočník vloží škodlivý kód dotazu SQL do formuláře. Pokud aplikace nezjistí škodlivý kód a předá jej do databáze, Databáze by mohla být škodlivým způsobem upravena nebo citlivá data by mohla být vystavena neoprávněným stranám.
šíření automatizované nástroje pro SQL injekce je SQL injection útoky rozšířený bezpečnostní výzvou pro Java aplikace a pro, že záležitost, prakticky jakýkoli jiný typ aplikace, které by mohly připojit k databázi dnes.
řešení útoků SQL injection v Javě je dostatečně jednoduché: Ujistěte se, že vaše aplikace správně ověřuje vstup a zabraňuje připojení škodlivého kódu k datům již přijatým do formuláře. Obecně a pokud je to možné, vyhněte se dynamickým dotazům, abyste zmírnili riziko injekcí SQL v aplikacích Java. Java je PreparedStatement třída může být také užitečné pro prevenci útoků SQL.
Java LDAP injekce
injekční útoky, které využívají příkazy LDAP (Lightweight Directory Access Protocol), představují další běžný útok na Java aplikace. Zde je opět ověření vstupu klíčem k prevenci útoků.
zejména vývojáři Java mohou zmařit většinu typů injekčních útoků LDAP, pokud uniknou speciálním znakům LDAP.
jiné typy injekčních útoků Java
již jsme se zabývali injekcemi SQL a injekcemi LDAP, ale injekční útoky v aplikacích Java zde nekončí. Injekce připojovacího řetězce, injekce skriptování mezi weby (XSS) a další typy útoků jsou možné.
Tyto typy útoků neplatí pro všechny Java aplikace-XSS je opravdu jen vážné riziko s webovými aplikacemi, například-ale jsou to další připomínka toho, proč vstupní validace je tak důležité.
zranitelnosti SecurityManager
SecurityManager je navržen tak, abyste mohli bezpečně spustit nedůvěryhodný bytecode v Java aplikacích. SecurityManager pískuje bytecode, aby se zabránilo útokům.
Toto je SecurityManager skvělý prostředek pro zabezpečení Java-za předpokladu, samozřejmě, že to funguje správně. Hlavním rizikem SecurityManager je historie bezpečnostních chyb, které vznikly v samotném SecurityManager. Tyto chyby zabezpečení někdy umožňují izolovanému kódu vymanit se z karantény a provést útoky.
v míře, řízení SecurityManager a Java bezpečnostní problémy, je problém, není pro vývojáře, ale pro systémové administrátory, kteří musí držet Java runtime aktuální. Vývojáři však mohou dělat svou část a pokud je to možné, vyhnout se pískovištím. Jinými slovy, nevěřte slepě SecurityManager. Pokud ji musíte použít v aplikaci, použijte ji. Ale pokud můžete dosáhnout funkce, kterou potřebujete, aniž by to, zmírnit bezpečnostní rizika Java, a vyhnout se tomu.
škodlivé sklenice
Když aplikace Java načte sklenice za běhu, někdy může hacker přimět aplikaci k propojení škodlivých sklenic. Jedná se o starý bezpečnostní problém a Java v průběhu let zavedla řadu kontrol, aby mu pomohla zabránit.
některé z těchto funkcí zmírnění útoku působí samy o sobě, ale vývojáři je mohou plně využít podpisem JARs. Tímto způsobem jsou podpisy ověřovány za běhu a zabraňují vniknutí. Programátoři mohou také zmírnit hrozbu, kterou představují škodlivé SKLENIC omezením přístupových oprávnění pro konkrétní třídy tak, že pokud škodlivý kód je načten, přírodní bezpečnostní politiky omezí škody škodlivý kód může dělat.