Co każdy programista powinien wiedzieć o bezpieczeństwie? [zamknięte]

Jestem studentem informatyki i jestem teraz na 3 roku studiów. Do tej pory studiowaliśmy wiele przedmiotów związanych z komputerami w ogóle (programowanie, algorytmy, architektura komputera, matematyka itp.).

Jestem bardzo pewien, że nikt nie może nauczyć się wszystkiego o bezpieczeństwie, ale na pewno każdy programista lub student informatyki powinien wiedzieć o tym "minimum" i moje pytanie brzmi, co to jest ta wiedza minimalna?

Czy możesz zaproponować jakieś e-booki, kursy lub cokolwiek może pomóc na początek tej drogi?

 413
Author: M.H, 2010-05-08

17 answers

Zasady, o których należy pamiętać, jeśli chcesz, aby Twoje aplikacje były bezpieczne:

  • nigdy nie ufaj żadnemu wkładowi!
  • zweryfikuj dane wejściowe ze wszystkich niezaufanych źródeł-używaj białych list, a nie czarnych list
  • Plan bezpieczeństwa od początku - to nie jest coś, co można uruchomić na końcu
  • Keep it simple-złożoność zwiększa prawdopodobieństwo luk w zabezpieczeniach
  • utrzymuj powierzchnię ataku do minimum
  • Upewnij się, że Nie uda bezpiecznie
  • Użyj obrona w głębi
  • najmniejszy przywilej
  • Użyj modelowanie zagrożeń
  • podziel - więc Twój system nie jest wszystkim albo niczym
  • ukrywanie sekretów jest trudne - a sekrety ukryte w kodzie nie pozostaną tajemnicą na długo
  • nie pisz własnego crypto
  • Korzystanie z crypto nie oznacza, że jesteś bezpieczny (atakujący będą szukać słabszego łącza)
  • Bądź świadomy bufor przepełnienia i jak przed nimi chronić

W Internecie jest kilka doskonałych książek i artykułów o zabezpieczeniu aplikacji:

Szkolenie programistów na temat bezpieczeństwa aplikacji najlepsze pratices

Codebashing (płatne)

Innowacje w zakresie bezpieczeństwa (płatne)

Kompas bezpieczeństwa (płatny)

OWASP WebGoat (free)

 538
Author: bignum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-13 15:46:58

Zasada # 1 Bezpieczeństwa dla programistów: nie rzucaj własnych

O ile nie jesteś ekspertem od bezpieczeństwa i / lub kryptografem, Zawsze używaj dobrze zaprojektowanej, dobrze przetestowanej i dojrzałej platformy bezpieczeństwa, frameworka lub biblioteki, aby wykonać pracę za Ciebie. Te rzeczy przez lata były przemyślane, łatane, aktualizowane i badane zarówno przez ekspertów, jak i hakerów. Chcesz zyskać te zalety, a nie odrzucać je, próbując odkryć koło na nowo.

Teraz to nie powiedzieć, że nie musisz się niczego uczyć o bezpieczeństwie. Z pewnością musisz wiedzieć wystarczająco dużo, aby zrozumieć, co robisz i upewnić się, że prawidłowo używasz narzędzi. Jeśli jednak kiedykolwiek zaczniesz pisać swój własny algorytm kryptograficzny, System Uwierzytelniania, środek dezynfekujący itp., zatrzymaj się, zrób krok w tył i zapamiętaj regułę # 1.

 100
Author: Tyler McHenry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-08 12:30:50

Każdy programista powinien umieć pisać kod exploita.

Nie wiedząc, w jaki sposób systemy są wykorzystywane, przypadkowo zatrzymujesz luki w zabezpieczeniach. Wiedza o tym, jak łatać kod jest absolutnie bez znaczenia, chyba że wiesz, jak testować swoje łatki. Bezpieczeństwo to nie tylko kilka eksperymentów myślowych, musisz być naukowy i przetestować swoje eksperymenty.

 67
Author: rook,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-23 08:01:28

Bezpieczeństwo to proces, a nie Produkt.

Wielu zdaje się zapominać o tej oczywistej rzeczy.

 39
Author: ericteubert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-10 11:06:49

Proponuję przejrzeć CWE / SANS TOP 25 najniebezpieczniejszych błędów programistycznych. Został on zaktualizowany na rok 2010 z obietnicą regularnych aktualizacji w przyszłości. Na 2009 dostępna jest również wersja.

Z http://cwe.mitre.org/top25/index.html

The 2010 CWE/SANS Top 25 Most Dangerous Programming Errors to lista najbardziej rozpowszechnionych i krytycznych błędów programistycznych, które mogą prowadzić do poważnych luk w oprogramowaniu. Często są łatwe do znalezienia i łatwe do wykorzystania. Są one niebezpieczne, ponieważ często pozwalają atakującym całkowicie przejąć oprogramowanie, ukraść dane lub uniemożliwić działanie oprogramowania.

The Top 25 list to narzędzie edukacji i świadomości, które pomaga programistom zapobiegać rodzajom luk w zabezpieczeniach, które nękają przemysł oprogramowania, poprzez identyfikowanie i unikanie zbyt powszechnych błędów, które występują przed wprowadzeniem oprogramowania. Klienci oprogramowania mogą korzystać ta sama lista, aby pomóc im poprosić o bezpieczniejsze oprogramowanie. Naukowcy zajmujący się bezpieczeństwem oprogramowania mogą wykorzystać Top 25, aby skupić się na wąskim, ale ważnym podzbiorze wszystkich znanych słabości zabezpieczeń. Wreszcie, menedżerowie oprogramowania i dyrektorzy IT mogą korzystać z listy Top 25 jako miernika postępu w swoich wysiłkach na rzecz zabezpieczenia swojego oprogramowania.

 22
Author: jschmier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-09 20:02:42

Dobrym kursem startowym może być Kurs MIT z Sieci Komputerowych i Bezpieczeństwa . Jedną z rzeczy, które chciałbym zaproponować, to nie zapominać o prywatności. Prywatność, pod pewnymi względami, jest naprawdę fundamentalna dla bezpieczeństwa i nie jest często omawiana w kursach technicznych dotyczących bezpieczeństwa. W tym kursie Możesz znaleźć materiały dotyczące prywatności na temat Etyki i prawa w odniesieniu do Internetu.

 12
Author: tvanfosson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-26 12:31:35

Zespół ds. bezpieczeństwa sieci w Mozilli przygotował świetny przewodnik , którego przestrzegamy przy rozwoju naszych Witryn i usług.

 9
Author: Potch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-07 20:50:01

Znaczenie bezpiecznych ustawień domyślnych w frameworkach i interfejsach API:

  • wiele wczesnych frameworków internetowych nie uciekało domyślnie html w szablonach i miało problemy z XSS z tego powodu
  • wiele wczesnych frameworków internetowych ułatwiało łączenie SQL niż tworzenie sparametryzowanych zapytań prowadzących do wielu błędów SQL injection.
  • Niektóre wersje Erlang (R13B, może inne) domyślnie nie weryfikują certyfikatów ssl peer i prawdopodobnie istnieje wiele kodów erlang, które są podatne na ataki SSL MITM
  • Java XSLT transformer domyślnie pozwala na wykonanie dowolnego kodu Javy. Przez to powstało wiele poważnych błędów bezpieczeństwa.
  • interfejsy API XML w Javie domyślnie pozwalają przetwarzanemu dokumentowi na odczyt dowolnych plików w systemie plików. Więcej zabawy:)
 6
Author: benmmurphy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-26 11:05:57

Powinieneś wiedzieć o trzech A. uwierzytelnianie, autoryzacja, audyt. Klasycznym błędem jest uwierzytelnienie użytkownika, nie sprawdzając, czy użytkownik jest uprawniony do wykonania jakiejś czynności, aby użytkownik mógł przeglądać prywatne zdjęcia innych użytkowników. Wiele, wiele więcej osób zapomina o audycie, trzeba w bezpiecznym systemie wiedzieć, kto co i kiedy zrobił.

 5
Author: rapadura,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-26 09:20:40
  • pamiętaj ,że ty (programista) musisz zabezpieczyć wszystkie części, ale atakujący musi tylko znaleźć jedno załamanie w Twoim pancerzu.
  • Bezpieczeństwo jest przykładem "nieznanych niewiadomych". Czasami nie będziesz wiedział, jakie są możliwe wady bezpieczeństwa (aż do później).
  • różnica między błędem a dziurą bezpieczeństwa zależy od inteligencji atakującego.
 4
Author: Rory,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-07 19:13:10

Dodałbym:

    Jak działają podpisy cyfrowe i certyfikaty cyfrowe]}
  • Co to jest sandboxing

Zrozumieć, jak działają różne wektory ataku:

  • przepełnienia bufora / niedopełnienia / etc na kodzie natywnym
  • social engineerring
  • DNS spoofing
  • Człowiek-w-środku
  • CSRF / XSS et al
  • SQL injection
  • Ataki kryptograficzne (np. wykorzystywanie słabych algorytmów kryptograficznych, takich jak DES)]}
  • Program/Framework błędy (np.: ostatnia wada bezpieczeństwa Githuba) ]}

Możesz łatwo wygooglować to wszystko. To da ci dobry fundament. Jeśli chcesz zobaczyć luki w aplikacjach internetowych, istnieje projekt o nazwie Google gruyere , który pokazuje, jak wykorzystać działającą aplikację internetową.

 4
Author: Miguel Ping,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-15 10:19:02

Kiedy budujesz jakiekolwiek przedsiębiorstwo lub własne oprogramowanie, powinieneś po prostu myśleć jak hacker.as wiemy, że hakerzy nie są również ekspertami we wszystkich rzeczach,ale gdy znajdą jakąkolwiek lukę, zaczynają grzebać w niej, zbierając informacje o wszystkich rzeczach i ostatecznie atakując naszą software.so aby zapobiec takim atakom, powinniśmy przestrzegać pewnych znanych zasad, takich jak:

  • zawsze staraj się łamać kody(użyj cheatsheets & google rzeczy więcej informacje).
  • Bądź aktualizowany pod kątem wad bezpieczeństwa w swojej dziedzinie programowania.
  • i jak wspomniano powyżej, nigdy nie ufaj żadnemu typowi wejść użytkownika lub automatycznych.
  • używaj aplikacji opensource(ich większość wad bezpieczeństwa jest znana i rozwiązywana).
Więcej informacji o zabezpieczeniach znajdziesz pod poniższymi linkami:

Aby uzyskać więcej informacji google o przepływach bezpieczeństwa dostawcy aplikacji.

 4
Author: rahul_pratap,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-30 06:45:55
  1. Dlaczego jest ważne.
  2. Chodzi o kompromisy. [1]}kryptografia jest w dużej mierze odwróceniem uwagi od bezpieczeństwa.
 3
Author: Richard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-08 12:27:24

Aby uzyskać ogólne informacje na temat bezpieczeństwa, Gorąco polecam lekturę Bruce Schneier . Ma stronę internetową, swój crypto-gram newsletter , kilka książek i zrobił wielewywiadów .

Chciałbym również zapoznać się z inżynierii społecznej (i Kevin Mitnick).

Za dobrą (i dość zabawną) książkę o tym, jak bezpieczeństwo rozgrywa się w realnym świecie, polecam znakomitą (choć trochę przestarzałą) "The Cuckoo' s Egg" by Cliff Stoll.

 3
Author: Dan Esparza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-09 16:33:24

Sprawdź również listę OWASP Top 10, aby uzyskać kategoryzację wszystkich głównych wektorów ataku/luk w zabezpieczeniach.

Te rzeczy są fascynujące do czytania. Nauczenie się myśleć jak atakujący będzie Cię szkolić, o czym myśleć, gdy piszesz swój własny kod.

 3
Author: Michael Kopinsky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-13 13:24:28

Sól i hash haseł użytkowników. Nigdy nie zapisuj ich w postaci zwykłego tekstu w bazie danych.

 2
Author: Abdull,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-08 10:41:08

Po prostu chciałem podzielić się tym dla web developerów:

Security-guide-for-developers
https://github.com/FallibleInc/security-guide-for-developers

 0
Author: Destrif,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-22 14:36:07