Jestem studentem informatyki i jestem teraz na trzecim roku studiów. Do tej pory studiowaliśmy wiele przedmiotów związanych z komputerami w ogóle (programowanie, algorytmy, architektura komputerów, matematyka itp.).
Jestem pewien, że nikt nie może dowiedzieć się wszystkiego na temat bezpieczeństwa, ale jestem pewien, że istnieje „minimalna” wiedza, którą powinien wiedzieć każdy programista lub student informatyki, a moje pytanie brzmi: co to za minimalna wiedza?
Czy możesz zasugerować jakieś e-książki lub kursy, czy coś może pomóc w rozpoczęciu tej drogi?
Odpowiedzi:
Zasady, o których należy pamiętać, jeśli chcesz, aby aplikacje były bezpieczne:
Istnieje kilka doskonałych książek i artykułów online na temat bezpieczeństwa aplikacji:
Naucz swoich programistów najlepszych praktyk w zakresie bezpieczeństwa aplikacji
Kodowanie (płatne)
Bezpieczeństwo innowacji (płatne)
Kompas bezpieczeństwa (płatny)
OWASP WebGoat (bezpłatny)
źródło
Zasada nr 1 bezpieczeństwa dla programistów: nie rzucaj własną
O ile nie jesteś ekspertem w dziedzinie bezpieczeństwa i / lub kryptografem, zawsze używaj dobrze zaprojektowanej, dobrze przetestowanej i dojrzałej platformy bezpieczeństwa, frameworku lub biblioteki, aby wykonać pracę za Ciebie. Te rzeczy spędziły lata na przemyślaniu, załataniu, aktualizacji i badaniu przez ekspertów i hakerów. Chcesz zyskać te zalety, a nie odrzucić je, próbując wynaleźć koło na nowo.
Nie oznacza to, że nie musisz uczyć się niczego na temat bezpieczeństwa. Z pewnością musisz wiedzieć wystarczająco dużo, aby zrozumieć, co robisz i upewnić się, że używasz narzędzi poprawnie. Jeśli jednak kiedykolwiek zaczniesz pisać własny algorytm kryptograficzny, system uwierzytelniania, dezynfekcję danych wejściowych itp., Przestań, cofnij się i pamiętaj o regule nr 1.
źródło
Każdy programista powinien wiedzieć, jak pisać kod exploita.
Nie wiedząc, w jaki sposób wykorzystywane są systemy, przypadkowo zatrzymujesz luki w zabezpieczeniach. Umiejętność łatania kodu jest absolutnie bez znaczenia, chyba że wiesz, jak przetestować łatki. Bezpieczeństwo to nie tylko kilka eksperymentów myślowych, musisz być naukowy i przetestować swoje eksperymenty.
źródło
Bezpieczeństwo to proces, a nie produkt.
Wielu zdaje się zapominać o tej oczywistej sprawie.
źródło
Sugeruję przejrzenie 25 najbardziej niebezpiecznych błędów programistycznych CWE / SANS TOP . Został zaktualizowany na 2010 rok z obietnicą regularnych aktualizacji w przyszłości. Wersja 2009 jest również dostępna.
Od http://cwe.mitre.org/top25/index.html
źródło
Dobrym początkowym kursem może być kurs MIT z zakresu sieci komputerowych i bezpieczeństwa . Jedną rzeczą, którą zasugerowałbym, to nie zapomnieć o prywatności. W pewnym sensie prywatność jest naprawdę fundamentem bezpieczeństwa i nie jest często przedmiotem technicznych kursów bezpieczeństwa. W tym kursie na temat etyki i prawa, który dotyczy internetu, możesz znaleźć trochę materiałów na temat prywatności .
źródło
Zespół Web Security w Mozilli opracował świetny przewodnik , którego przestrzegamy przy opracowywaniu naszych witryn i usług.
źródło
Znaczenie bezpiecznych ustawień domyślnych w ramach i interfejsach API:
źródło
Powinieneś wiedzieć o trzech A. Uwierzytelnianie, autoryzacja, audyt. Klasycznym błędem jest uwierzytelnienie użytkownika, bez sprawdzania, czy użytkownik jest upoważniony do wykonania jakiejś czynności, aby użytkownik mógł spojrzeć na prywatne zdjęcia innych użytkowników, tak jak zrobił to Diaspora. Wiele, wiele innych osób zapomina o Audycie, potrzebujesz w bezpiecznym systemie, aby móc powiedzieć, kto i co zrobił.
źródło
źródło
Dodałbym następujące:
Zrozum, jak działają różne wektory ataku:
Możesz łatwo google dla tego wszystkiego. To da ci dobry fundament. Jeśli chcesz zobaczyć luki w zabezpieczeniach aplikacji internetowych, istnieje projekt o nazwie Google Gruyere, który pokazuje, jak wykorzystać działającą aplikację internetową.
źródło
gdy budujesz jakieś przedsiębiorstwo lub własne oprogramowanie, powinieneś po prostu myśleć jak haker. wiemy, że hakerzy również nie są ekspertami we wszystkich rzeczach, ale kiedy znajdą jakąś lukę, zaczynają się w nie zagłębiać, zbierając informacje o wszystkich rzeczy i wreszcie atak na nasze oprogramowanie. więc aby zapobiec takim atakom, powinniśmy przestrzegać kilku dobrze znanych zasad, takich jak:
więcej zasobów bezpieczeństwa można znaleźć pod następującymi linkami:
aby uzyskać więcej informacji google na temat przepływów bezpieczeństwa dostawcy aplikacji.
źródło
źródło
W celu uzyskania ogólnych informacji na temat bezpieczeństwa gorąco polecam przeczytanie Bruce'a Schneiera . Ma stronę internetową, biuletyn kryptogramowy , kilka książek i przeprowadził wiele wywiadów .
Zapoznałem się również z inżynierią społeczną (i Kevinem Mitnickiem ).
Dla dobrej (i całkiem zabawnej) książki o tym, jak bezpieczeństwo gra się w prawdziwym świecie, poleciłbym doskonałą (choć nieco przestarzałą) „Jajko kukułki” autorstwa Cliffa Stolla.
źródło
Koniecznie sprawdź też listę 10 najlepszych OWASP aby podzielić wszystkie główne wektory / podatności na ataki.
Te rzeczy są fascynujące do przeczytania. Nauka myślenia jak atakujący nauczy Cię myśleć o tym, pisząc własny kod.
źródło
Sól i mieszaj hasła użytkowników. Nigdy nie zapisuj ich w postaci zwykłego tekstu w swojej bazie danych.
źródło
Chciałem tylko udostępnić to programistom:
przewodnik bezpieczeństwa dla programistów
https://github.com/FallibleInc/security-guide-for-developers
źródło