Ha, mint körülbelül 10 millió más ember, Java fejlesztő vagy, valószínűleg tudni akarod, hogyan lehet biztonságban tartani a Java kódot. A fejlesztőknek mindig meg kell maradniuk a tippek és a legjobb gyakorlatok tetején a Java biztonsági problémák kezelésére.
a Java ma a legnépszerűbb programozási nyelv, jó okkal. A Java kód cross-platform. A Java programozást széles körben tanítják az egyetemi számítástechnikai tanszékeken. Olyan sok lelkes szemű programozó lép be az első munkahelyére, amely készen áll a Java kódolására. A Java objektum-orientált kialakítása pedig egyszerűvé teszi a kód újrafelhasználását.
mégis, annak ellenére, hogy a Java népszerűsége, akkor lenne szorongatott találni valakit, aki azt állítják, Java a legbiztonságosabb programozási nyelv odakinn. A Java biztonsági problémák valósak. A Java-t úgy tervezték, hogy ugyanolyan biztonságos legyen, mint a legtöbb más népszerű programozási nyelv, és olyan funkciókat kínál, mint a SecurityManager, hogy bizonyos helyzetekben javítsa a biztonságot. A Java alkalmazások azonban számos lehetséges biztonsági résnek vannak kitéve, beleértve, de nem kizárólagosan, a különféle injekciós támadásokat.
a Java fejlesztők és rendszergazdák számára fontos, hogy a Java alkalmazások írása és telepítése során szem előtt tartsák a gyakori Java biztonsági réseket. A biztonság-első programozás különösen fontos a Java esetében, mivel a Java kód platformközi jellege azt jelenti, hogy az operációs rendszer szintű biztonsági keretrendszerekben nem mindig lehet megbízni az alkalmazások biztonságának megőrzésében.
azt sem szabad elvárni, hogy a végfelhasználók képesek legyenek hatékonyan kezelni a Java biztonsági fenyegetéseket. Persze, hibáztathatja a felhasználókat a nem megbízható Java kód futtatásáért vagy a Java futási idejének automatikus frissítésének letiltásáért, de végső soron a biztonságos Java alkalmazások írásának és a kód elkülönítésének terhe egy olyan Java környezetben, amely esetleg nem biztonságos, a fejlesztőket terheli.
gyakori Java biztonsági problémák
a Java programozóknak a következő biztonsági kihívásokat kell szem előtt tartaniuk, amikor Java alkalmazásokat terveznek és írnak.
SQL injekciók
SQL injekciók akkor fordulnak elő, amikor a támadó rosszindulatú SQL lekérdezési kódot szúr be egy űrlapba. Ha az alkalmazás nem észleli a rosszindulatú kódot, és továbbítja azt egy adatbázisba, akkor az adatbázis káros módon módosítható, vagy az érzékeny adatok illetéktelen személyek elé kerülhetnek.
az SQL injekciók automatizált eszközeinek elterjedése az SQL injekciós támadásokat széles körű biztonsági kihívássá teszi a Java alkalmazások számára, és ami azt illeti, gyakorlatilag minden más típusú alkalmazás számára, amely ma csatlakozhat egy adatbázishoz.
Az SQL injection támadások megoldása Java-ban elég egyszerű: Győződjön meg arról, hogy az alkalmazás megfelelően érvényesíti a bevitelt, és megakadályozza, hogy rosszindulatú kódokat csatoljanak az űrlapba már elfogadott adatokhoz. Általános szabályként és ahol lehetséges, kerülje a dinamikus lekérdezéseket, hogy csökkentse az SQL injekciók kockázatát a Java alkalmazásokban. A Java PreparedStatement osztálya szintén hasznos lehet az SQL támadások megelőzésében.
Java LDAP injekciók
A Lightweight Directory Access Protocol (LDAP) utasításait kihasználó injekciós támadások egy másik gyakori támadást jelentenek a Java alkalmazások ellen. Itt is a bemeneti érvényesítés a kulcs a támadások megelőzéséhez.
különösen a Java fejlesztők meghiúsíthatják az LDAP injekciós támadások legtöbb típusát, ha elkerülik az LDAP speciális karaktereket.
más típusú Java injekciós támadások
már lefedtük az SQL injekciókat és az LDAP injekciókat, de a Java alkalmazásokban az injekciós támadások ezzel nem érnek véget. Connection string injekciók, cross-site scripting (XSS) injekciók és más típusú támadások mind lehetségesek.
Az ilyen típusú támadások nem vonatkoznak minden Java alkalmazásra-az XSS valójában csak komoly kockázatot jelent például a webes alkalmazásoknál -, de egy újabb emlékeztető arra, hogy miért olyan fontos a bemeneti érvényesítés.
SecurityManager biztonsági rések
SecurityManager úgy tervezték, így lehet futtatni megbízhatatlan bytecode biztonságosan belül Java alkalmazások. SecurityManager sandboxes a bytecode annak érdekében, hogy megakadályozzák a támadásokat.
Ez teszi a SecurityManager-t nagyszerű erőforrássá a Java biztonsághoz-feltéve, hogy természetesen megfelelően működik. A SecurityManager fő kockázata a biztonsági rések története, amelyek magában a Securitymanagerben merültek fel. Ezek a sebezhetőségek néha lehetővé teszik, hogy az elszigetelt kód kitörjön a homokozóból és támadásokat hajtson végre.
a SecurityManager és a Java biztonsági problémák kezelése bizonyos mértékig nem a fejlesztők, hanem a rendszeradminisztrátorok számára jelent problémát, akiknek naprakészen kell tartaniuk a Java futási időket. A fejlesztők azonban megtehetik a részüket, és lehetőség szerint elkerülhetik a homokozókat. Más szóval, ne vakon bízzon a Securitymanagerben. Ha egy alkalmazásban kell használni, akkor használja. De ha anélkül is el tudja érni a szükséges funkciókat, csökkentse a Java biztonsági kockázatait, és kerülje el.
rosszindulatú Üvegek
amikor egy Java alkalmazás futásidőben tölti be az üvegeket, néha egy hacker becsaphatja az alkalmazást rosszindulatú Üvegek összekapcsolására. Ez egy régi biztonsági probléma, és a Java számos ellenőrzést vezetett be az évek során, hogy segítsen megelőzni.
néhány ilyen támadáscsökkentő funkció önállóan működik, de a fejlesztők teljes mértékben kihasználhatják őket a JARs aláírásával. Így az aláírásokat futás közben ellenőrzik, és megakadályozzák a behatolást. A programozók enyhíthetik a rosszindulatú jar-ok által okozott veszélyt azáltal, hogy korlátozzák az egyes osztályok hozzáférési jogosultságait, így ha rosszindulatú kódot töltenek be, a természetes biztonsági irányelvek korlátozzák a rosszindulatú kód által okozott károkat.