CodeGym /Blog Java /Random-PL /Bezpieczeństwo przede wszystkim. Czy Java jest nazywana b...
John Squirrels
Poziom 41
San Francisco

Bezpieczeństwo przede wszystkim. Czy Java jest nazywana bezpiecznym językiem nie bez powodu?

Opublikowano w grupie Random-PL
Istnieje wiele dobrych rzeczy w Javie jako języku programowania. Jest elegancki, ale potężny, wielofunkcyjny i niezależny od platformy. Ponieważ jest to najczęściej wymieniana zaleta zorientowania obiektowego i przenośności, inna główna zaleta Javy zwykle pozostaje w cieniu, więc nowicjusze często mają ograniczone zrozumienie wszystkich korzyści płynących z nauki Javy zamiast innego języka programowania, aby dokonać właściwego wyboru. Czy kiedykolwiek słyszałeś, jak Java jest nazywana bezpiecznym językiem programowania? Tak jest i słusznie. Bezpieczeństwo przede wszystkim.  Czy Java jest nazywana bezpiecznym językiem nie bez powodu?  - 1 Pomyśleliśmy więc, że nadszedł czas, aby rzucić nieco światła na tę kwestię i wyjaśnić, dlaczego Java jest nazywana językiem bezpiecznym iw jaki dokładnie sposób jest bezpieczna.

Co sprawia, że ​​Java jest bezpiecznym językiem?

Czy Java jest bezpieczna? Istnieje wiele powodów, aby nazywać Javę bezpiecznym językiem programowania, chociaż stwierdzenie, że Java jest bezpieczniejsza w porównaniu z wieloma innymi językami, byłoby właściwym sposobem, aby to ująć, ponieważ te funkcje w rzeczywistości nie sprawiają, że Java jest całkowicie bezpieczna, po prostu głównie poprawić bezpieczeństwo wykonywania kodu Java.
  • Weryfikacja kodu bajtowego.
Weryfikacja kodu bajtowego jest jedną z podstawowych funkcji zapewniających bezpieczeństwo kodu Java. Weryfikacja kodu bajtowego oznacza, że ​​Java używa kompilatora, który odczytuje kod Java i tłumaczy go na niezależną od maszyny reprezentację kodu bajtowego. Pozwala to upewnić się, że wykonywane są tylko legalne kody bajtowe i żaden szkodliwy kod nie może dostać się do systemu. Kompilator sprawdza, czy kody bajtowe są zgodne ze specyfikacją języka Java i nie naruszają reguł języka Java ani ograniczeń przestrzeni nazw. Kod jest również sprawdzany pod kątem wielu innych „czerwonych flag”, takich jak nielegalne typy danych, niedopełnienia i przepełnienia stosu lub naruszenia zarządzania pamięcią. Aby wyjaśnić to w prostszy sposób, programy Java są kompilowane jako kod bitowy, który następnie działa wewnątrz maszyny wirtualnej i nie ma dostępu do komputera, na którym działa. Sprawia, że ​​ten kod jest znacznie bezpieczniejszy w użyciu,
  • Automatyczne zarządzanie pamięcią.
Inną ważną cechą Javy jako bezpiecznego języka jest automatyczne zarządzanie pamięcią i wyrzucanie elementów bezużytecznych, co również sprawia, że ​​Java jest znacznie łatwiejszym językiem dla programisty, ponieważ Java automatycznie zajmuje się wszystkimi problemami z pamięcią wewnętrzną i systemami zarządzania danymi. Dzięki temu programista nie musi w ogóle martwić się problemami z pamięcią podczas tworzenia programu, skupiając się zamiast tego na innych ważnych rzeczach. Na przykład wyrzucanie elementów bezużytecznych automatycznie zwalnia pamięć, gdy jest to wymagane. Nawiasem mówiąc, kolejną ważną zaletą całej tej automatyzacji zarządzania w Javie jest fakt, że zmniejsza ona ogólne koszty programowania (ponieważ wiele ważnych funkcji i procesów jest zautomatyzowanych).
  • Brak wskazówek.
W przeciwieństwie do wielu innych języków programowania, na przykład C i C+, które używają wartości wskaźników do zarządzania pamięcią aplikacji, w Javie nie ma koncepcji wskaźników. Chociaż pierwotnie zaprojektowane jako środek bezpieczeństwa (w celu ochrony prywatnych danych przed złodziejami), wskaźniki mogą również stanowić poważną lukę w przypadku, gdy jakimś złoczyńcom uda się uzyskać do nich dostęp, ponieważ wskaźniki nie mają możliwości zweryfikowania autoryzacji w nich , zasadniczo umożliwiając każdemu dostęp do pamięci aplikacji. Java, jak powiedzieliśmy, nie używa wskaźników, zamiast tego polega na swoich systemach zarządzania danymi i pamięci wewnętrznej jako sposobie ochrony danych przed nieautoryzowanym dostępem. Uniemożliwia to hakerom infiltrację pamięci aplikacji Java. Zrozumiałe jest, że jest to kolejny powód, dla którego Java jest popularna w programowaniu przedsiębiorstw,
  • Kompilator Java automatycznie sprawdza, wykrywa i naprawia błędy w kodzie.
Automatyczne sprawdzanie kodu pod kątem błędów to kolejna ważna cecha Javy, która czyni ją bezpieczniejszą. Kompilator sprawdza kod, wykrywa błędy, ostrzega programistę o tych strzałkach i sugeruje sposoby ich naprawy. To znowu upraszcza pracę programisty, sprawia, że ​​aplikacje Java są znacznie bardziej stabilne, a ostatecznie zmniejsza koszty rozwoju (powód numer 1 dla prawie każdej firmy). Jeśli chodzi o część bezpieczeństwa, minimalizuje to również szanse na przedostanie się zewnętrznego złośliwego kodu do twojego programu i dokonanie w nim nieautoryzowanych modyfikacji.
  • Java wykonuje automatyczne sprawdzanie typów danych.
Oprócz sprawdzania kodu pod kątem błędów, Java Compiler automatycznie sprawdza również zmienne w kodzie, aby upewnić się, że nie ma obaw związanych z bezpieczeństwem, które mogą wynikać z błędów wprowadzania danych w zmiennych. Jest to kolejny sposób ochrony systemu przed infiltracją i kradzieżą danych.

Jakie komponenty Java faktycznie zapewniają bezpieczeństwo?

Jeśli chodzi o konkretne komponenty Java, które odgrywają najważniejszą rolę w jej bezpieczeństwie, oto krótka lista, która pozwoli ci lepiej zrozumieć, na podstawowym poziomie, jak to działa i co dokładnie sprawia, że ​​Java jest bezpieczna.
  • Wirtualna maszyna Javy (JVM).
JVM, będąc maszyną wirtualną, która uruchamia reprezentację kodu bajtowego programu Java, oczywiście odgrywa bardzo ważną rolę w ogólnym bezpieczeństwie Java. Korzystanie z maszyny JVM umożliwia blokowanie wszelkich potencjalnie niebezpiecznych operacji programu.
  • Architektura kryptografii Java (JCA).
Java Cryptography Architecture to platforma umożliwiająca dodawanie funkcji kryptograficznych dla platformy Java. Korzystanie z Java Cryptography Architecture gwarantuje, że Twoje dane będą szyfrowane i pozostaną bezpieczne.
  • Infrastruktura klucza publicznego (PKI).
Infrastruktura klucza publicznego to kolejny framework, który pozwala na zastosowanie kryptografii klucza publicznego w celu osiągnięcia bezpiecznej wymiany danych. Korzystając z infrastruktury PKI, można powiązać tożsamości z certyfikatami cyfrowymi i w razie potrzeby weryfikować autentyczność certyfikatów.
  • Menadżer ochrony.
Menedżer bezpieczeństwa w Javie to w zasadzie klasa, która umożliwia aplikacjom implementację polityki bezpieczeństwa, definiuje dla nich politykę bezpieczeństwa i pozwala programiście ustawić poziom bezpieczeństwa dla aplikacji.
  • Piaskownica Javy.
Piaskownica Java to obszar programu do uruchamiania apletów Java, który ogranicza to, co aplet może zrobić, aby upewnić się, że nie zagrozi bezpieczeństwu i nie będzie mógł uzyskać dostępu do zasobów systemowych bez kontroli bezpieczeństwa.

opinie

Czy profesjonalni programiści Java z wieloletnim doświadczeniem uważają, że ten język jest bezpieczny? Oto parę cytatów. „Powiedziałbym, że Java jako taka nie jest bezpieczna (żaden język programowania nie jest), ale JVM oferuje funkcje, które zapewniają bezpieczeństwo. Więc chociaż Java nie ochroni cię przed wszystkim, ochroni cię przed całą klasą problemów, które są spowodowane przepełnieniem bufora” — powiedziałGarry Taylor, doświadczony programista i CTO firmy Black Spark Media. „Java poprawia bezpieczeństwo, ograniczając aplet do środowiska wykonawczego Java i uniemożliwiając mu dostęp do innych części komputera. Możliwość pobierania apletów z pewnością, że nie spowoduje to żadnych szkód i że żadne zabezpieczenia nie zostaną naruszone, jest przez wielu uważana za najbardziej innowacyjny aspekt Javy” — zauważył Smit Prakash, inżynier oprogramowania w IBM.

Streszczenie

Czy zatem Java jest bezpieczna? Podsumowując, Java zdecydowanie ma wiele wspaniałych funkcji i wbudowanych narzędzi, które czynią ją bezpieczniejszą. Wiele z tych funkcji odgrywa ważną rolę w ogólnej popularności Javy, zwłaszcza na rynku korporacyjnym, ponieważ pozwalają one firmom skutecznie chronić swoje dane przed nieautoryzowanym dostępem, jednocześnie automatyzując szereg procesów programistycznych, które nie są zautomatyzowane przez inne języki. Ale chociaż uwielbiamy chwalić się Javą i jej wspaniałością, Java wciąż nie jest całkowicie bezpieczna. W rzeczywistości żaden z języków programowania nie jest w pełni bezpieczny, a każdy z nich ma swoje mocne i słabe strony (luki). Ogólnie rzecz biorąc, rozważa się Cbyć najbardziej wrażliwym językiem programowania. Eksperci twierdzą, że Java, pomimo wielu doskonałych funkcji bezpieczeństwa opisanych powyżej, nadal jest podatna na ataki po stronie serwera i może ucierpieć z powodu exploitów .
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION