CZĘŚĆ I: Jak się zalogować
Zakładamy, że już wiesz, jak zbudować formularz logowania + hasło HTML, który POST zapisuje wartości do skryptu po stronie serwera w celu uwierzytelnienia. Poniższe sekcje zajmą się wzorcami prawidłowego uwierzytelniania dźwięku i sposobem uniknięcia najczęstszych pułapek bezpieczeństwa.
Do HTTPS czy nie do HTTPS?
O ile połączenie nie jest już bezpieczne (to znaczy tunelowane przez HTTPS przy użyciu SSL / TLS), twoje wartości formularza logowania zostaną wysłane w postaci jawnego tekstu, co pozwoli każdemu podsłuchującemu połączenie między przeglądarką a serwerem internetowym będzie mogło czytać loginy podczas przechodzenia przez. Tego rodzaju podsłuchy są rutynowo wykonywane przez rządy, ale ogólnie rzecz biorąc, nie zajmiemy się „własnymi” kablami inaczej niż mówiąc: Po prostu użyj HTTPS.
Zasadniczo jedynym praktycznym sposobem ochrony przed podsłuchiwaniem / podsłuchiwaniem pakietów podczas logowania jest użycie HTTPS lub innego schematu szyfrowania opartego na certyfikatach (na przykład TLS ) lub sprawdzonego i przetestowanego schematu wyzwanie-odpowiedź (na przykład Diffie-Hellman na bazie SRP). Każdą inną metodę można łatwo obejść przez podsłuchującego.
Oczywiście, jeśli chcesz uzyskać nieco niepraktyczne podejście, możesz również zastosować jakąś formę dwuskładnikowego schematu uwierzytelniania (np. Aplikację Google Authenticator, fizyczny słownik kodów „zimnej wojny” lub klucz generatora kluczy RSA). Przy prawidłowym zastosowaniu może to działać nawet przy niezabezpieczonym połączeniu, ale trudno sobie wyobrazić, że deweloper byłby skłonny wdrożyć uwierzytelnianie dwuskładnikowe, ale nie SSL.
(Nie) Rzuć własne szyfrowanie / mieszanie JavaScript
Biorąc pod uwagę postrzegany (choć obecnie możliwy do uniknięcia ) koszt i trudności techniczne związane z konfiguracją certyfikatu SSL w Twojej witrynie, niektórzy programiści mają pokusę, aby wprowadzić własne schematy szyfrowania lub szyfrowania w przeglądarce, aby uniknąć przekazywania logowanych tekstów jawnych przez niezabezpieczony przewód.
Chociaż jest to szlachetna myśl, jest w zasadzie bezużyteczna (i może być wadą bezpieczeństwa ), chyba że jest połączona z jednym z powyższych - to znaczy zabezpieczeniem linii za pomocą silnego szyfrowania lub użyciem wypróbowanej i przetestowanej odpowiedzi na wyzwanie mechanizm (jeśli nie wiesz, co to jest, po prostu wiedz, że jest to jeden z najtrudniejszych do udowodnienia, najtrudniejszych do zaprojektowania i najtrudniejszych do wdrożenia pojęć w bezpieczeństwie cyfrowym).
Chociaż prawdą jest, że zaszyfrowanie hasła może być skuteczne w przypadku ujawnienia hasła , jest ono podatne na ataki typu powtórka, ataki typu man-in-the-Middle / porwania (jeśli atakujący może wstrzyknąć kilka bajtów do niezabezpieczonej strony HTML, zanim dotrze ona do twojego przeglądarki, mogą po prostu skomentować skrót w JavaScript) lub ataki typu brute-force (ponieważ przekazujesz atakującemu zarówno nazwę użytkownika, sól, jak i hashowane hasło).
CAPTCHAS przeciwko ludzkości
CAPTCHA ma na celu udaremnienie jednej konkretnej kategorii ataku: automatyczny słownik / brutalna próba i błąd bez udziału operatora. Nie ma wątpliwości, że jest to realne zagrożenie, jednak istnieją sposoby radzenia sobie z nim bezproblemowo, które nie wymagają CAPTCHA, specjalnie odpowiednio zaprojektowanych schematów ograniczania logowania po stronie serwera - omówimy je później.
Wiedz, że implementacje CAPTCHA nie są tworzone podobnie; często nie są one do rozwiązania przez człowieka, większość z nich jest faktycznie nieskuteczna w stosunku do botów, wszystkie z nich są nieskuteczne w stosunku do taniej siły roboczej z trzeciego świata (według OWASP , obecna stawka potu wynosi 12 USD za 500 testów), a niektóre wdrożenia mogą być technicznie nielegalne w niektórych krajach (patrz Arkusz danych uwierzytelniających OWASP ). Jeśli musisz użyć CAPTCHA, skorzystaj z Google reCAPTCHA , ponieważ z definicji jest on trudny do OCR (ponieważ używa już sklasyfikowanych skanów książek z błędem OCR) i bardzo stara się być przyjazny dla użytkownika.
Osobiście uważam, że CAPTCHAS jest denerwujący i używam ich tylko w ostateczności, gdy użytkownik nie zaloguje się wiele razy, a opóźnienia w dławieniu są maksymalne. Zdarzy się to rzadko, aby było możliwe do zaakceptowania i wzmacnia system jako całość.
Przechowywanie haseł / Weryfikowanie logowania
Może to wreszcie być powszechna wiedza po wszystkich szeroko rozpowszechnionych włamaniach i wyciekach danych użytkowników, które widzieliśmy w ostatnich latach, ale trzeba powiedzieć: nie przechowuj haseł w postaci jawnego tekstu w swojej bazie danych. Bazy danych użytkowników są rutynowo hakowane, wyciekane lub zbierane za pomocą wstrzykiwania SQL, a jeśli przechowujesz surowe hasła w postaci jawnego tekstu, jest to natychmiastowa gra dla twojego bezpieczeństwa logowania.
Więc jeśli nie możesz zapisać hasła, jak sprawdzić, czy kombinacja login + hasło POSTed z formularza logowania jest poprawna? Odpowiedź jest mieszana za pomocą funkcji wyprowadzania klucza . Za każdym razem, gdy tworzony jest nowy użytkownik lub hasło jest zmieniane, bierzesz hasło i uruchamiasz je przez KDF, takie jak Argon2, bcrypt, scrypt lub PBKDF2, zamieniając hasło w postaci czystego tekstu („correcthorsebatterystaple”) w długi, losowo wyglądający ciąg , który jest znacznie bezpieczniejszy do przechowywania w bazie danych. Aby zweryfikować login, uruchamiasz tę samą funkcję skrótu na wprowadzonym haśle, tym razem przekazując sól i porównując wynikowy ciąg skrótu z wartością przechowywaną w bazie danych. Argon2, bcrypt i scrypt przechowują sól z hashem już. Więcej informacji znajdziesz w tym artykule na temat sec.stackexchange.
Powodem użycia soli jest to, że hasz sam w sobie nie jest wystarczający - będziesz chciał dodać tak zwaną „sól”, aby zabezpieczyć hash przed tęczowymi stołami . Sól skutecznie zapobiega przechowywaniu dwóch dokładnie pasujących haseł jako tej samej wartości skrótu, zapobiegając skanowaniu całej bazy danych za jednym razem, jeśli atakujący wykonuje atak polegający na zgadywaniu hasła.
Hasła kryptograficznego nie należy używać do przechowywania haseł, ponieważ hasła wybrane przez użytkownika nie są wystarczająco silne (tj. Zwykle nie zawierają wystarczającej entropii), a atak zgadywania hasła może zostać przeprowadzony w stosunkowo krótkim czasie przez atakującego z dostępem do skrótów. Właśnie dlatego stosowane są KDF - te skutecznie „rozciągają klucz” , co oznacza, że każde odgadnięcie hasła przez atakującego powoduje wielokrotne powtórzenie algorytmu skrótu, na przykład 10 000 razy, co powoduje, że atakujący odgaduje hasło 10 000 razy wolniej.
Dane sesji - „Jesteś zalogowany jako Spiderman69”
Gdy serwer zweryfikuje login i hasło w bazie danych użytkowników i znajdzie dopasowanie, system potrzebuje sposobu na zapamiętanie, że przeglądarka została uwierzytelniona. Ten fakt powinien być zawsze przechowywany po stronie serwera w danych sesji.
Jeśli nie znasz danych sesji, oto jak to działa: pojedynczy losowo wygenerowany ciąg jest przechowywany w wygasającym pliku cookie i służy do odwoływania się do zbioru danych - danych sesji - przechowywanych na serwerze. Jeśli używasz frameworka MVC, jest to niewątpliwie już obsługiwane.
Jeśli to w ogóle możliwe, upewnij się, że sesyjny plik cookie ma ustawione flagi bezpieczeństwa i HTTP Only podczas wysyłania do przeglądarki. Flaga HttpOnly zapewnia pewną ochronę przed odczytaniem pliku cookie podczas ataku XSS. Flaga bezpieczeństwa zapewnia, że plik cookie jest wysyłany z powrotem tylko przez HTTPS, a zatem chroni przed atakami podsłuchiwania sieci. Wartość pliku cookie nie powinna być przewidywalna. W przypadku przedstawienia pliku cookie odnoszącego się do nieistniejącej sesji jego wartość należy natychmiast zastąpić, aby zapobiec utrwaleniu sesji .
CZĘŚĆ II: Jak pozostać zalogowanym - Niesławne pole wyboru „Pamiętaj mnie”
Pliki cookie trwałego logowania (funkcja „zapamiętaj mnie”) są strefą niebezpieczną; z jednej strony są one całkowicie tak bezpieczne, jak zwykłe logowanie, gdy użytkownicy rozumieją, jak sobie z nimi radzić; z drugiej strony stanowią ogromne zagrożenie bezpieczeństwa w rękach nieostrożnych użytkowników, którzy mogą z nich korzystać na komputerach publicznych i zapomnieć się wylogować, a którzy mogą nie wiedzieć, jakie są pliki cookie przeglądarki i jak je usunąć.
Osobiście lubię trwałe logowanie do stron, które odwiedzam regularnie, ale wiem, jak sobie z nimi bezpiecznie radzić. Jeśli masz pewność, że użytkownicy wiedzą to samo, możesz korzystać z trwałych loginów z czystym sumieniem. Jeśli nie - cóż, możesz zaakceptować filozofię, że użytkownicy, którzy nieostrożnie podają swoje dane logowania, narzucą to sobie, jeśli zostaną zhakowani. To nie jest tak, że idziemy do domów naszych użytkowników i odrywamy wszystkie te nakręcane przez twarz notatki Post-It hasłami, które ustawili na krawędziach swoich monitorów.
Oczywiście, niektóre systemy nie mogą sobie pozwolić na jakiekolwiek kont hacked; w przypadku takich systemów nie można usprawiedliwić trwałego logowania.
Jeśli zdecydujesz się wdrożyć trwałe pliki cookie do logowania, możesz to zrobić w następujący sposób:
Najpierw poświęć trochę czasu na przeczytanie artykułu Paragon Initiative na ten temat. Musisz odpowiednio dobrać kilka elementów, a artykuł objaśnia każdy z nich.
I aby powtórzyć jedną z najczęstszych pułapek, NIE PRZECHOWYWAJ TRWAŁEGO LOGOWANIA COOKIE (TOKEN) W SWOJEJ BAZY DANYCH, TYLKO SKRZYDŁO! Token logowania jest równoważny hasłem, więc jeśli osoba atakująca wpadnie na twoją bazę danych, może użyć tokenów do zalogowania się na dowolnym koncie, tak jak gdyby były to jednoznaczne kombinacje hasła do logowania. Dlatego używaj skrótu (zgodnie z https://security.stackexchange.com/a/63438/5002 do tego celu wystarczy słaby skrót) do przechowywania trwałych tokenów logowania.
CZĘŚĆ III: Używanie tajnych pytań
Nie wdrażaj „tajnych pytań” . Funkcja „tajnych pytań” stanowi anty-wzór bezpieczeństwa. Przeczytaj artykuł z linku nr 4 z listy MUST-READ. Możesz zapytać o nią Sarah Palin, po niej Yahoo! konto e-mail zostało zhakowane podczas poprzedniej kampanii prezydenckiej, ponieważ odpowiedź na jej pytanie ochronne brzmiała ... „Wasilla High School”!
Nawet w przypadku pytań określonych przez użytkownika jest wysoce prawdopodobne, że większość użytkowników wybierze:
„Standardowe” tajne pytanie, takie jak nazwisko panieńskie matki lub ulubione zwierzę domowe
Prosta ciekawostka, którą każdy może podnieść ze swojego bloga, profilu LinkedIn lub podobnego
Na każde pytanie, na które łatwiej odpowiedzieć, niż odgadnięcie hasła. Które, dla każdego porządnego hasła, jest każdym pytaniem, jakie możesz sobie wyobrazić
Podsumowując, pytania bezpieczeństwa są z natury niepewne praktycznie we wszystkich ich formach i odmianach i nie powinny być stosowane w systemie uwierzytelniania z jakiegokolwiek powodu.
Prawdziwym powodem, dla którego pytania bezpieczeństwa istnieją nawet na wolności, jest to, że w wygodny sposób oszczędzają na kosztach kilku połączeń z pomocą techniczną od użytkowników, którzy nie mogą uzyskać dostępu do poczty e-mail w celu uzyskania kodu reaktywacyjnego. To kosztem bezpieczeństwa i reputacji Sarah Palin. Warto było? Prawdopodobnie nie.
CZĘŚĆ IV: Funkcjonalność zapomnianego hasła
Wspomniałem już, dlaczego nigdy nie należy używać pytań bezpieczeństwa do obsługi zapomnianych / utraconych haseł użytkowników; oczywiste jest również, że nigdy nie należy wysyłać użytkownikom wiadomości e-mail z ich rzeczywistymi hasłami. W tej dziedzinie są jeszcze co najmniej dwa zbyt częste pułapki:
Nie przestawiaj zapomnianego hasła na automatycznie generowane silne hasło - takie hasła są niezwykle trudne do zapamiętania, co oznacza, że użytkownik musi je zmienić lub zapisać - powiedzmy na jasnożółtym plakacie Post-It na brzegu monitora. Zamiast ustawiać nowe hasło, pozwól użytkownikom od razu wybrać nowe hasło - i tak chcą zrobić. (Wyjątkiem może być sytuacja, gdy użytkownicy powszechnie używają menedżera haseł do przechowywania / zarządzania hasłami, których normalnie nie można zapamiętać bez ich zapisania).
Zawsze mieszaj utracony kod / token hasła w bazie danych. PONOWNIE , ten kod jest kolejnym przykładem ekwiwalentu hasła, więc MUSI zostać zakodowany na wypadek, gdyby atakujący dostał się w twoją bazę danych. Gdy zażądasz zgubionego hasła, wyślij kod w postaci zwykłego tekstu na adres e-mail użytkownika, a następnie go zaszyfruj, zapisz skrót w bazie danych - i wyrzuć oryginał . Podobnie jak hasło lub trwały token logowania.
Ostatnia uwaga: zawsze upewnij się, że interfejs do wprowadzania „kodu utraconego hasła” jest co najmniej tak samo bezpieczny jak sam formularz logowania, w przeciwnym razie atakujący po prostu użyje tego, aby uzyskać dostęp. Upewnij się, że generujesz bardzo długie „utracone kody haseł” (na przykład 16 znaków alfanumerycznych z rozróżnianiem wielkości liter) to dobry początek, ale rozważ dodanie takiego samego schematu ograniczania przepustowości, jak w przypadku samego formularza logowania.
CZĘŚĆ V: Sprawdzanie siły hasła
Najpierw przeczytaj ten mały artykuł, aby sprawdzić rzeczywistość: 500 najczęściej używanych haseł
Okej, więc może ta lista nie jest kanoniczną listą najpopularniejszych haseł w dowolnym systemie w dowolnym miejscu , ale jest dobrym wskaźnikiem tego, jak słabo ludzie wybierają swoje hasła, gdy nie ma narzuconych zasad. Ponadto lista wygląda przerażająco blisko domu, gdy porównasz ją z publicznie dostępnymi analizami ostatnio skradzionych haseł.
A zatem: Bez minimalnych wymagań dotyczących siły hasła 2% użytkowników korzysta z jednego z 20 najpopularniejszych haseł. Czyli: jeśli atakujący dostanie tylko 20 prób, 1 na 50 kont w Twojej witrynie będzie można wyłamać.
Udaremnienie tego wymaga obliczenia entropii hasła, a następnie zastosowania progu. Publikacja specjalna Narodowego Instytutu Standardów i Technologii (NIST) 800-63 zawiera zestaw bardzo dobrych sugestii. To, w połączeniu z analizą słownika i układu klawiatury (na przykład „qwertyuiop” jest złym hasłem), może odrzucić 99% wszystkich źle wybranych haseł na poziomie 18 bitów entropii. Proste obliczenie siły hasła i pokazanie miernika siły wizualnej jest dobre, ale niewystarczające. O ile nie zostanie to wymuszone, wielu użytkowników najprawdopodobniej go zignoruje.
A dla odświeżającego spojrzenia na łatwość w obsłudze haseł o wysokim stopniu entropii wysoce zalecane jest użycie hasła Randall Munroe's Password Strength xkcd .
Użyj interfejsu API Troy Hunt's Have I Was Pwned, aby sprawdzić hasła użytkowników względem haseł naruszonych w wyniku publicznego naruszenia bezpieczeństwa danych.
CZĘŚĆ VI: Znacznie więcej - lub: Zapobieganie próbom szybkiego logowania
Najpierw spójrz na liczby: Prędkości odzyskiwania hasła - jak długo hasło będzie aktywne
Jeśli nie masz czasu na przeglądanie tabel w tym łączu, oto ich lista:
Złamanie słabego hasła praktycznie nie zajmuje czasu , nawet jeśli złamiesz je za pomocą liczydła
Złamanie 9-znakowego hasła alfanumerycznego praktycznie nie zajmuje czasu, jeśli nie rozróżnia wielkich i małych liter
Złamanie skomplikowanego, złożonego z symboli i liter i cyfr, wielkich i małych liter hasła nie zajmuje prawie czasu, jeśli ma mniej niż 8 znaków (komputer stacjonarny może przeszukiwać całą przestrzeń klawiszy do 7 znaków w jednym przypadku dni lub nawet godzin)
Złamanie nawet 6-znakowego hasła zajęłoby jednak nadmiernie dużo czasu, gdyby ograniczono się do jednej próby na sekundę!
Czego możemy się nauczyć z tych liczb? Cóż, wiele, ale możemy skupić się na najważniejszej części: tym, że zapobieganie dużej liczbie szybkich kolejnych prób logowania (tj. Atak brutalnej siły ) naprawdę nie jest takie trudne. Ale zapobieganie temu nie jest tak proste, jak się wydaje.
Ogólnie rzecz biorąc, masz trzy możliwości, które są skuteczne przeciwko atakom siłowym (i atakom słownikowym, ale ponieważ już stosujesz silną politykę haseł, nie powinno to stanowić problemu) :
Przedstaw CAPTCHA po N nieudanych próbach (denerwujące jak diabli i często nieskuteczne - ale powtarzam się tutaj)
Blokowanie kont i wymaganie weryfikacji adresu e-mail po N nieudanych próbach (jest to atak DoS czekający na wystąpienie )
I wreszcie : ograniczenie przepustowości logowania : to znaczy ustawienie opóźnienia między próbami po N nieudanych próbach (tak, ataki DoS są nadal możliwe, ale przynajmniej są znacznie mniej prawdopodobne i o wiele bardziej skomplikowane).
Najlepsza praktyka nr 1: Krótkie opóźnienie czasowe, które zwiększa się wraz z liczbą nieudanych prób, takich jak:
- 1 nieudana próba = bez opóźnienia
- 2 nieudane próby = 2 sekundy opóźnienia
- 3 nieudane próby = 4 sekundy opóźnienia
- 4 nieudane próby = 8 sekund opóźnienia
- 5 nieudanych prób = 16 sekund opóźnienia
- itp.
DoS atakujący ten schemat byłby bardzo niepraktyczny, ponieważ wynikowy czas blokady jest nieco większy niż suma poprzednich czasów blokady.
Wyjaśnienie: opóźnienie nie jest opóźnieniem przed zwróceniem odpowiedzi do przeglądarki. Przypomina to bardziej przekroczenie limitu czasu lub okres refrakcji, podczas którego próby zalogowania się na określone konto lub z określonego adresu IP nie będą w ogóle akceptowane lub oceniane. Oznacza to, że poprawne poświadczenia nie powrócą po pomyślnym zalogowaniu, a nieprawidłowe poświadczenia nie spowodują zwiększenia opóźnienia.
Najlepsza praktyka nr 2: Średnie opóźnienie, które obowiązuje po N nieudanych próbach, takie jak:
- 1-4 nieudane próby = bez opóźnienia
- 5 nieudanych prób = 15-30 min opóźnienia
DoS atakujący ten schemat byłby niepraktyczny, ale z pewnością wykonalny. Warto również zauważyć, że tak duże opóźnienie może być bardzo denerwujące dla legalnego użytkownika. Zapomniani użytkownicy nie będą cię lubić.
Najlepsza praktyka nr 3: Łączenie dwóch podejść - albo stałego, krótkiego opóźnienia, które zaczyna obowiązywać po N nieudanych próbach, takich jak:
- 1-4 nieudane próby = bez opóźnienia
- 5+ nieudanych prób = 20 sekund opóźnienia
Lub rosnące opóźnienie ze stałą górną granicą, takie jak:
- 1 nieudana próba = 5 sekund opóźnienia
- 2 nieudane próby = 15 sekund opóźnienia
- 3+ nieudane próby = 45 sekund opóźnienia
Ten ostateczny schemat został zaczerpnięty z sugestii najlepszych praktyk OWASP (link 1 z listy MUST-READ) i powinien być uważany za najlepszą praktykę, nawet jeśli jest to wprawdzie strona ograniczająca.
Zasadniczo jednak powiedziałbym: im silniejsza jest twoja polityka dotycząca haseł, tym mniej musisz opóźniać użytkowników. Jeśli potrzebujesz silnych (rozróżniających wielkość liter alfanumerycznych + wymaganych cyfr i symboli) 9+ haseł znaków, możesz dać użytkownikom 2-4 nie opóźnione próby hasła przed aktywowaniem ograniczania przepustowości.
DoS atakujący ten schemat ograniczania końcowego logowania byłby bardzo niepraktyczny. I w ostatecznym rozrachunku zawsze zezwalaj na przechowywanie trwałych (cookie) logowań (i / lub formularza logowania zweryfikowanego przez CAPTCHA), dzięki czemu legalni użytkownicy nie będą nawet opóźnieni podczas trwania ataku . W ten sposób bardzo niepraktyczny atak DoS staje się niezwykle niepraktycznym atakiem.
Ponadto sensowne jest bardziej agresywne ograniczanie liczby kont administracyjnych, ponieważ są to najbardziej atrakcyjne punkty wejścia
CZĘŚĆ VII: Rozproszone ataki brutalnej siły
Nawiasem mówiąc, bardziej zaawansowani atakujący będą próbowali obejść ograniczenie przepustowości logowania poprzez „rozprzestrzenianie swoich działań”:
Dystrybucja prób w botnecie, aby zapobiec oznaczeniu adresu IP
Zamiast wybierać jednego użytkownika i wypróbować 50 000 najczęstszych haseł (których nie mogą, z powodu naszego ograniczania przepustowości), wybiorą najczęściej używane hasło i wypróbują je przeciwko 50 000 użytkowników. W ten sposób nie tylko omijają środki podejmowane przy maksymalnych próbach, jak CAPTCHA i ograniczanie logowania, zwiększa się również ich szansa na sukces, ponieważ najpopularniejsze hasło numer 1 jest znacznie bardziej prawdopodobne niż numer 49,995
Rozmieszczenie żądań logowania dla każdego konta użytkownika, powiedzmy, w odstępie 30 sekund, aby zakraść się pod radarem
W tym przypadku najlepszą praktyką byłoby rejestrowanie liczby nieudanych prób logowania w całym systemie i używanie bieżącej średniej częstotliwości złego logowania w witrynie jako podstawy górnego limitu, który następnie nakładasz na wszystkich użytkowników.
Zbyt abstrakcyjny? Pozwól, że sformułuję:
Załóżmy, że w ciągu ostatnich 3 miesięcy Twoja witryna miała średnio 120 złych logowań dziennie. Korzystając z tego (średnia bieżąca), twój system może ustawić globalny limit na 3-krotność - tj. 360 nieudanych prób w ciągu 24 godzin. Następnie, jeśli łączna liczba nieudanych prób na wszystkich kontach przekroczy tę liczbę w ciągu jednego dnia (lub nawet lepiej, monitoruj przyspieszenie i wyzwalaj na obliczonym progu), aktywuje ograniczanie logowania w całym systemie - co oznacza krótkie opóźnienia dla WSZYSTKICH użytkowników (nadal, z wyjątkiem logowania do plików cookie i / lub tworzenia kopii zapasowych loginów CAPTCHA).
Zadałem też pytanie ze szczegółami i naprawdę dobrą dyskusją na temat tego, jak unikać trudnych pułapek w odpieraniu rozproszonych ataków siłowych
CZĘŚĆ VIII: Uwierzytelnianie dwuskładnikowe i dostawcy uwierzytelnienia
Poświadczenia mogą zostać naruszone, czy to przez exploity, spisywane i zagubione hasła, laptopy ze skradzionymi kluczami, czy użytkownicy wprowadzający dane logowania do stron phishingowych. Loginy można dodatkowo zabezpieczyć za pomocą uwierzytelniania dwuskładnikowego, które wykorzystuje czynniki pozapasmowe, takie jak kody jednorazowe odebrane z połączenia telefonicznego, wiadomości SMS, aplikacji lub klucza sprzętowego. Kilku dostawców oferuje usługi uwierzytelniania dwuskładnikowego.
Uwierzytelnianie można całkowicie przekazać do usługi pojedynczego logowania, w której inny dostawca obsługuje zbieranie poświadczeń. To popycha problem do zaufanej strony trzeciej. Zarówno Google, jak i Twitter zapewniają usługi SSO oparte na standardach, a Facebook zapewnia podobne zastrzeżone rozwiązanie.
NIEZBĘDNE CZYTANIE LINKÓW Informacje o uwierzytelnianiu sieci
- Przewodnik OWASP do uwierzytelniania / Ściągawka do uwierzytelniania OWASP
- Dos i zakazy uwierzytelnienia klienta w sieci (bardzo czytelny artykuł badawczy MIT)
- Wikipedia: plik cookie HTTP
- Pytania dotyczące wiedzy osobistej w przypadku uwierzytelnienia awaryjnego: pytania bezpieczeństwa w erze Facebooka (bardzo czytelny artykuł badawczy Berkeley)