JavaRush /Blog Java /Random-PL /Przerwa kawowa #35. Jak przestrzegać zasad bezpieczeństwa...

Przerwa kawowa #35. Jak przestrzegać zasad bezpieczeństwa GitHub. Przydatne wskazówki dotyczące szybkiego debugowania kodu Java

Opublikowano w grupie Random-PL

Jak zachować bezpieczeństwo w GitHubie

Źródło: DZone GitHub jest zasłużenie uważany za najpopularniejszą platformę do rozwoju zespołów. Według danych z jesieni ubiegłego roku z usługi tej korzystało ponad 40 milionów programistów. A ponieważ większość z nich korzysta z oprogramowania typu open source, bezpieczeństwo podczas pracy na Githubie powinno być Twoim najwyższym priorytetem. Ponowne użycie kodu zwiększa ryzyko rozprzestrzeniania się luk w zabezpieczeniach. Oznacza to, że każdy użytkownik GitHuba powinien zwrócić maksymalną uwagę na stworzenie bezpiecznego środowiska programistycznego. Przerwa kawowa #35.  Jak przestrzegać zasad bezpieczeństwa GitHub.  Przydatne wskazówki dotyczące szybkiego debugowania kodu Java - 1Jest 8 zasad, których musisz przestrzegać, aby chronić swój kod GitHub.

Zapewnij kontrolę dostępu

Kontrola dostępu to jeden z najlepszych sposobów na poprawę bezpieczeństwa nie tylko na GitHubie, ale w każdym innym środowisku, w którym wymagana jest ochrona kodu. GitHub oferuje kilka sposobów na zmniejszenie ryzyka w pracy. Po pierwsze, przyjmij praktykę przyznawania najniższych uprawnień — daj użytkownikom repozytorium tylko te uprawnienia, których potrzebują do wykonywania swojej pracy. Istnieją inne metody kontroli dostępu, których należy przestrzegać:
  • ograniczyć tworzenie repozytoriów, aby uniemożliwić użytkownikom ujawnianie informacji o organizacji w repozytoriach publicznych;
  • włączyć ochronę oddziałów i kontrolę stanu, aby użytkownicy mogli scalać zatwierdzenia lub bezpiecznie zarządzać oddziałami;
  • Zezwól lub wyłącz rozwidlenie prywatnych repozytoriów, aby mieć pewność, że użytkownicy nie ujawnią ani nie udostępnią Twojego kodu innym osobom;
  • odebrać dostęp wszystkim nieaktywnym użytkownikom, którzy nie są już członkami Twojej społeczności lub pracownikami firmy;
  • Okresowo sprawdzaj prawa dostępu do swoich projektów na GitHubie;
  • Upewnij się, że użytkownicy nie udostępniają innym dostępu do konta GitHub ani haseł;
  • upewnij się, że każdy użytkownik repozytorium korzysta na swoim koncie z uwierzytelniania dwuskładnikowego;
  • Okresowo zmieniaj osobiste tokeny dostępu i klucze SSH.

Nigdy nie przechowuj danych dostępowych w plikach GitHub

Wyciek informacji o dostępie do repozytorium GitHub poprzez kod, pliki konfiguracyjne lub komunikaty zatwierdzeń może zostać wykorzystany do ataków. Aby zapobiec dodawaniu wrażliwych danych do repozytorium, użyj narzędzi kontroli dostępu, takich jak git-secrets lub Vault . Narzędzia te skanują bazę kodu i zmieniają dostęp, gdy w kodzie lub plikach konfiguracyjnych zostaną znalezione poufne informacje. Jeśli znajdziesz poufne informacje w swoim repozytorium GitHub, powinieneś je natychmiast usunąć. Ponieważ jednak GitHub przechowuje historię wszystkich zatwierdzeń w Twoim repozytorium, samo usunięcie danych nie wystarczy. Będziesz musiał usunąć pliki z historii repozytorium GitHub. Ważnym krokiem w kierunku poprawy bezpieczeństwa będzie wymiana wszystkich haseł i tokenów, które wcześniej były publicznie dostępne.

Włącz alerty dotyczące podatnych zależności

W miarę jak użytkownicy GitHuba pracują nad większą liczbą projektów, kontrolowanie rosnącej liczby zależnych obiektów staje się coraz trudniejsze. Na szczęście GitHub zapewnia automatyczne alerty dotyczące podatnych na ataki zależności znalezionych w repozytorium. Alerty te opierają się na krajowej bazie danych o lukach w zabezpieczeniach (NVD), poradach bezpieczeństwa GitHub i bazie danych o lukach WhiteSource, która obsługuje ponad 200 języków programowania. Alerty GitHub sprawiają, że korzystanie z bibliotek open source jest łatwiejsze i bezpieczniejsze.

Sprawdź aplikacje dodane z GitHub

GitHub Marketplace zawiera setki aplikacji napisanych przez zewnętrznych programistów i firmy. Dlatego ważne jest, aby dokładnie sprawdzić każdą aplikację dodawaną do repozytorium. Podczas instalowania aplikacji z GitHub Marketplace postępuj zgodnie z poniższymi wskazówkami:
  • Egzekwuj zasadę najmniejszych przywilejów. Nigdy nie dawaj aplikacjom większych praw dostępu, niż wymagają;
  • Zawsze kwestionuj prawa dostępu lub uprawnienia wymagane przez aplikację. Pomyśl o szkodach, jakie może to spowodować przy takim poziomie dostępu;
  • Zanim przyznasz mu dostęp do repozytorium GitHub, sprawdź, czy firma lub twórca aplikacji rzeczywiście istnieje;
  • Sprawdź funkcjonalność i bezpieczeństwo aplikacji. Jeśli zawiera luki, możesz stać się ofiarą włamań;
Bezpieczeństwo aplikacji ocenia się na podstawie jej najsłabszej części. Dotyczy to również repozytoriów GitHub. Zanim więc przyznasz aplikacji dostęp do swojej pamięci, upewnij się, że jej ufasz i że odpowiada ona poziomowi dostępu, o który prosi.

Sprawdź cały kod zaimportowany z GitHub

Programiści często korzystają z kodu innych osób. Za każdym razem, gdy kopiujesz do swojego projektu część kodu innej osoby, przeprowadź jego pełny przegląd. Może się to wydawać stratą czasu, szczególnie w przypadku małych projektów, ale istnieje ryzyko, że zlekceważąc tę ​​zasadę, wprowadzisz lukę do swojego repozytorium. Innym ryzykiem związanym z importowanym kodem jest to, że może zawierać poufne informacje, takie jak dane dostępowe. Jeśli są przechowywane w plikach GitHub, stwarza to kolejne zagrożenie bezpieczeństwa. Audyt kodu przed jego skopiowaniem pomaga zidentyfikować takie luki. Nie zakładaj, że kod innej osoby jest bezpieczny, ponieważ znajdował się w prywatnym repozytorium. Może to bardzo zaszkodzić Twojemu kodowi.

Użyj automatycznej analizy statycznego kodu źródłowego dla swoich repozytoriów

Istnieje kilka narzędzi innych firm, których można użyć do analizy repozytorium pod kątem luk w zabezpieczeniach. Jednym z nich jest WhiteSource Bolt , darmowe narzędzie z GitHub Marketplace. WhiteSource Bolt skanuje Twoje repozytoria pod kątem luk w całym ujawnionym kodzie. Zawiera także szczegółowe informacje na temat luk w zabezpieczeniach i sugeruje możliwości ich zaradzenia.

Skorzystaj z planu GitHub, który odpowiada Twoim potrzebom

Wiele firm ma zasady uniemożliwiające programistom publikowanie kodu na platformach takich jak GitHub. Ograniczenia te są szczególnie powszechne w departamentach rządowych i instytucjach finansowych. Jeśli pracujesz w ściśle regulowanym środowisku, skorzystaj z GitHub Enterprise , planu dla przedsiębiorstw, który umożliwia hostowanie repozytoriów na serwerze lokalnym. Zapewnia to wyższy poziom bezpieczeństwa, ponieważ pozwala programistom firmy mieć dostęp do wszystkich projektów bez obawy o nieautoryzowanych użytkowników GitHub.

Stosuj kompleksową politykę bezpieczeństwa w swoich projektach

Bezpieczeństwo to odpowiedzialność zbiorowa. Jeśli pracujesz w zespole, ważne jest ustalenie zasad bezpieczeństwa, których muszą przestrzegać wszyscy interesariusze. Najlepiej byłoby, gdybyś na etapie planowania zintegrował zespoły ds. cyberbezpieczeństwa i rozwoju, aby zapewnić ich synchronizację. Dzięki temu łatwiej będzie zapewnić ochronę na etapie rozwoju. Jeśli jeden z członków Twojego zespołu nieostrożnie przechowuje hasła lub inne poufne informacje, może to narazić całe repozytorium na ryzyko. Aby tego uniknąć, wyraźnie udokumentuj procedurę bezpieczeństwa, której muszą przestrzegać wszyscy Twoi współpracownicy.

Wniosek

Zabezpieczanie kodu w GitHubie jest łatwe. Wystarczy zadbać o odpowiednią kontrolę dostępu, korzystając z wbudowanych funkcji bezpieczeństwa GitHuba. Jeśli interesuje Cię maksymalna ochrona, zintegruj dodatkowe narzędzia, które zwiększą bezpieczeństwo kodu na wszystkich etapach jego rozwoju. Zalecamy także zapoznanie się z sekcjami dokumentacji GitHub Security for Business i Free Users . W ten sposób możesz uzyskać dodatkowe informacje na temat bezpieczeństwa i ochrony kodu.

Przydatne wskazówki dotyczące szybkiego debugowania kodu Java

Źródło: Hackernoon Oprócz pisania wydajnego kodu, doskonalenie umiejętności debugowania to jedna z najbardziej przydatnych rzeczy, które możesz zrobić, aby ułatwić sobie życie jako programista Java. Jest to szczególnie ważne w nowoczesnych warunkach tworzenia oprogramowania, gdzie świat oprogramowania aktywnie zmierza w stronę architektur rozproszonych i kodu asynchronicznego. Przerwa kawowa #35.  Jak przestrzegać zasad bezpieczeństwa GitHub.  Przydatne wskazówki dotyczące szybkiego debugowania kodu Java - 2Chociaż błędy oprogramowania są nieuniknione, w złożonych kompilacjach stają się coraz trudniejsze do wykrycia i naprawienia. A kiedy przechodzimy do etapu wydawania produktu, proces debugowania staje się jeszcze poważniejszym problemem. Niestety nie da się tego uniknąć - konieczne jest debugowanie. Aby Ci pomóc, postanowiłem podzielić się kilkoma przydatnymi wskazówkami dotyczącymi debugowania aplikacji Java na różnych etapach rozwoju.

Wykorzystaj punkty kontrolne

Zacznijmy od punktów przerwania, oczywistego, ale bardzo ważnego punktu leżącego u podstaw każdego procesu debugowania. Punkty kontrolne pozwalają zatrzymać wykonywanie aplikacji, dzięki czemu można przeanalizować stan programu i dowiedzieć się, dlaczego kod nie działa poprawnie. Każdy debuger oferuje kilka opcji punktów przerwania, w tym warunkowe punkty przerwania, punkty przerwania wyjątków, punkty kontrolne i punkty śledzenia. Dowiedzenie się, jak i kiedy używać różnych typów punktów przerwania, może sprawić, że proces debugowania będzie płynniejszy. Warto wspomnieć, że niektóre nowoczesne narzędzia obsługują punkty kontrolne bez przerywania aplikacji. Dzięki temu możliwe jest ustawianie punktów w kodzie i zbieranie danych debugowania bez zatrzymywania wykonywania programu.

Pokaż logiczną strukturę

Funkcja pokazywania struktury logicznej jest bardzo przydatna podczas monitorowania zawartości klas Java. Jeśli ta funkcja jest włączona, lista zmiennych pokazuje tablicę, co jest znacznie bardziej przydatne w kontekście debugowania. Jest to bardzo wygodne, szczególnie jeśli w kodzie brakuje metod toString() dla obiektów. Widoki zmiennych umożliwiają także bezpośrednią zmianę wartości zmiennych podczas debugowania. Może to zaoszczędzić znaczną ilość czasu, ponieważ nie trzeba ponownie uruchamiać sesji debugowania ze zmienionymi danymi wejściowymi.

Naucz się poruszać po bazie kodu

Każdy debuger Java może korzystać z kilku funkcji, które umożliwiają nawigację po różnych sekcjach kodu podczas debugowania. Niektóre z nich to „biegnij do linii”, „przejdź”, „wejdź do” i „wejdź do”. Oprócz nich rozważ jeszcze dwie opcje:
  1. Upuść do klatki — ta funkcja służy do powrotu do punktu w ramce stosu. Jeśli przegapiłeś jakiś punkt i chcesz wrócić, po prostu użyj funkcji Przenieś do klatki.
  2. Filtrowanie krokowe - umożliwia pominięcie niektórych pakietów podczas debugowania. Nie musisz nawigować po wszystkich klasach w systemie JDK, kiedy możesz po prostu odfiltrować typy, których nie potrzebujesz.
Aby poprawić szybkość nawigacji po kodzie, musisz opanować kombinacje klawiszy funkcyjnych:
  • F5 – dla „wkroczenia”.
  • F6 – za „przejście”.
  • F7 – dla „krokowego powrotu”.
  • F8 – aby pobiec do kolejnego punktu kontrolnego.
Chociaż skróty klawiaturowe mogą się różnić w zależności od IDE, jeśli je zapamiętasz, zaoszczędzisz na częstszym używaniu myszy.

Naucz się unikać zakleszczeń

Scenariusz zakleszczenia występuje, gdy co najmniej dwa wątki blokują się po utworzeniu zależności cyklicznej. Ponieważ zestaw wątków Java zwykle czeka na inny zasób, może to spowodować całkowite zatrzymanie aplikacji. Debugowanie zakleszczeń jstack może być dość trudne, ponieważ nie pokazują one wskaźników problemów, takich jak skoki pamięci, obciążenie procesora itp. Istnieją różne podejścia do rozwiązywania problemów z zakleszczeniem jstack. Po pierwsze, możesz przechwycić wiele zrzutów wątków w klastrze JVM, aby wywnioskować wzorce wątków. W takim przypadku analiza zrzutu wątku statycznego może nie wystarczyć. W zależności od rozmiaru klastra JVM może być konieczne przeszukanie wielu plików, co często jest procesem pracochłonnym i czasochłonnym. Najlepiej jest użyć rozwiązania do monitorowania aplikacji, które zapewnia warstwę JV i warstwę kodu niezbędną do izolowania zakleszczeń wątków. Na szczęście istnieją innowacyjne narzędzia, które mogą pomóc w tej sytuacji, w tym niektóre nowoczesne debugery, a także komercyjne narzędzia APM. Narzędzia te zwiększają przejrzystość kodu Java podczas identyfikowania błędów.

Wykorzystaj możliwości debugerów produkcyjnych

Typowy proces debugowania stosowany przez większość programistów obejmuje replikację środowiska, izolowanie błędu, a następnie jego naprawianie. Nie ma to jednak zastosowania we wszystkich przypadkach. W takiej sytuacji programista powinien użyć wydajnych debugerów produkcyjnych. Rookout jest jednym z takich narzędzi. Umożliwia zbieranie danych debugowania z aplikacji bez zmiany ich stanu i kontroli przepływu. Dzięki Rookout możesz ustawić nieprzerwane punkty przerwania, aby uzyskać pełne śledzenie stosu, przechwytywać zmienne na żywo lub inne dane aplikacji potrzebne do debugowania. Zamiast więc korzystać z rozwiązań monitorujących o dużym nakładzie pracy do debugowania produkcyjnego, po prostu użyj Rookout, który zapewnia wszystko, czego potrzebujesz do debugowania aplikacji bez konieczności ponownego wdrażania lub pisania nowego kodu. Niezależnie od tego, czy pracujesz nad aplikacjami po stronie serwera, czy w aplikacjach kontenerowych, Rookout jest doskonałym dodatkiem do Twojego arsenału debugowania.

Nie zapomnij o zdalnym debugowaniu

Zdecydowana większość IDE, takich jak NetBeans, Eclipse, IntelliJ IDEA i Visual Studio, obsługuje zdalne debugowanie, technikę, która pozwala naprawić kod Java znajdujący się na innym komputerze. Jest to szczególnie ważne w sytuacjach, gdy system nie obsługuje lokalnego debugowania lub gdy komputer nie ma wystarczających zasobów, aby uruchomić debugery. Aby przeprowadzić zdalne debugowanie, należy podać informacje konfiguracyjne, których debuger będzie używać do łączenia się ze zdalnym portem. Zdalne debugowanie jest również przydatne w rozwiązywaniu problemów, gdy programiści spoza firmy muszą połączyć się z aplikacją, aby naprawić błąd. Pamiętaj, że czasami debugowanie może zająć więcej czasu niż faktyczna implementacja. W miarę doskonalenia umiejętności debugowania w języku Java zawsze staraj się pisać czysty i wydajny kod — to się opłaca, jeśli chodzi o naprawianie błędów. Jeśli czujesz, że sprawy wymykają się spod kontroli, zawsze warto zrobić sobie przerwę. Błąd to zagadka programistyczna i wielu programistom udało się rozwiązać ten problem, nie będąc w pobliżu komputera. Użyj strategii opisanych powyżej, aby pozbyć się problemów z debugowaniem Java. Miłego kodowania!
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION