Ostateczny przewodnik po uwierzytelnianiu stron internetowych w oparciu o formularze [zamknięty]

Uwierzytelnianie oparte na formularzach dla stron internetowych

Uważamy, że przepełnienie stosu powinno być nie tylko źródłem bardzo szczegółowych pytań technicznych, ale także ogólnych wytycznych dotyczących rozwiązywania typowych problemów. "Uwierzytelnianie oparte na formularzach dla stron internetowych" powinno być dobrym tematem dla takiego eksperymentu.

Powinno zawierać takie tematy jak:

  • Jak się zalogować
  • Jak się wylogować
  • Jak pozostać zalogowanym
  • Zarządzanie plikami cookie (w tym zalecane ustawienia)
  • szyfrowanie SSL/HTTPS
  • Jak przechowywać hasła
  • używanie tajnych pytań
  • zapomniałem nazwy użytkownika/hasła
  • W związku z tym, że nie jest to możliwe, nie jest to konieczne, ponieważ nie jest to konieczne.]}
  • OpenID
  • pole wyboru"Zapamiętaj mnie"
  • Automatyczne uzupełnianie nazw użytkowników i haseł w przeglądarce
  • Secret URLs (public URL protected by digest)
  • sprawdzanie hasła Siła
  • Walidacja poczty e-mail
  • i wiele więcej o uwierzytelnianie oparte na formularzach ...

Nie powinno zawierać takich rzeczy jak:

  • role i autoryzacja
  • podstawowe uwierzytelnianie HTTP

Proszę o pomoc przez:

  1. sugerując subtopiki
  2. zgłaszanie dobrych artykułów na ten temat
  3. edycja oficjalnej odpowiedzi
Author: Michiel de Mare, 2008-08-02

12 answers

Część I: jak się zalogować

Zakładamy, że wiesz już, jak zbudować formularz HTML login+hasło, który wysyła wartości do skryptu po stronie serwera w celu uwierzytelnienia. W poniższych sekcjach omówione zostaną wzorce dźwiękowego auth oraz sposoby uniknięcia najczęstszych pułapek bezpieczeństwa.

Do HTTPS czy nie do HTTPS?

O ile połączenie nie jest już bezpieczne (tj. tunelowane przez HTTPS przy użyciu SSL / TLS), wartości formularza logowania zostaną wysłane w cleartext, który pozwala każdemu podsłuchiwać na linii między przeglądarką a serwerem WWW, będzie mógł odczytać loginy podczas ich przechodzenia. Ten rodzaj podsłuchu jest rutynowo przeprowadzany przez rządy, ale ogólnie nie będziemy zwracać się do "posiadanych" przewodów inaczej niż mówiąc: jeśli chronisz cokolwiek ważnego, użyj HTTPS.

W zasadzie jedynym praktycznym sposobem ochrony przed podsłuchem / sniffingiem pakietów podczas logowania jest użycie HTTPS lub innego szyfrowania opartego na certyfikatach system (na przykład, TLS ) lub sprawdzony i przetestowany schemat odpowiedzi na wyzwanie (na przykład, SRP oparty na Diffie-Hellman). każda inna metoda może być łatwo ominięta przez atakującego podsłuchującego.

Oczywiście, jeśli chcesz uzyskać trochę niepraktyczne, możesz również zastosować jakąś formę dwuskładnikowego schematu uwierzytelniania (np. aplikacja Google Authenticator, fizyczny książka kodów w stylu "zimnej wojny" lub klucz generatora kluczy RSA). W przypadku prawidłowego zastosowania, może to działać nawet z niezabezpieczonym połączeniem, ale trudno sobie wyobrazić, że dev byłby skłonny zaimplementować dwuskładnikowy auth, ale nie SSL.

(Do not) Roll-your-own JavaScript encryption / hashing

Biorąc pod uwagę niezerowy koszt i postrzegane trudności techniczne związane z konfiguracją certyfikatu SSL na twojej stronie, niektórzy programiści są kuszeni do tworzenia własnych schematów haszowania lub szyfrowania w przeglądarce, aby uniknąć przekazywania loginów cleartext przez niezabezpieczony drut.

Chociaż jest to szlachetna myśl, jest zasadniczo bezużyteczna (i może być[29]}wadą bezpieczeństwa ), chyba że jest połączona z jednym z powyższych - czyli zabezpieczeniem linii za pomocą silnego szyfrowania lub użyciem wypróbowanego mechanizmu odpowiedzi na wyzwania (jeśli nie wiesz, co to jest, po prostu wiedz, że jest to jedna z najtrudniejszych do udowodnienia, najtrudniejszych do zaprojektowania i najtrudniejszych do wdrożenia koncepcji w zakresie bezpieczeństwa cyfrowego).

/ Align = "left" / hasło Może być skuteczne przeciwko ujawnieniu hasła {6]}, jest podatne na ataki powtórkowe, ataki typu Man-in-the-Middle / porwania (jeśli atakujący może wstrzyknąć kilka bajtów do niezabezpieczonej strony HTML, zanim dotrze do przeglądarki, może po prostu skomentować haszowanie w JavaScript) lub ataki brute-force (ponieważ przekazujesz atakującemu zarówno nazwę użytkownika, salt, jak i hashowane hasło).

CAPTCHAS against humanity

CAPTCHAs są ma na celu udaremnienie jednej konkretnej kategorii ataku: zautomatyzowany słownik / brute force trial-and-error bez ludzkiego operatora. Nie ma wątpliwości, że jest to realne zagrożenie, jednak istnieją sposoby radzenia sobie z tym płynnie, które nie wymagają CAPTCHA, specjalnie odpowiednio zaprojektowane Schematy ograniczania logowania po stronie serwera - omówimy je później.

Wiedz, że implementacje CAPTCHA nie są tworzone podobnie; często nie są rozwiązywalne przez człowieka, większość z nich jest faktycznie nieskuteczna wobec boty, wszystkie z nich są nieskuteczne w walce z tanią pracą z trzeciego świata (wedługOWASP , obecna stawka wynosi $12 za 500 testów), a niektóre implementacje mogą być technicznie nielegalne w niektórych krajach (zobacz OWASP Authentication Cheat Sheet). Jeśli musisz użyć CAPTCHA, użyj Google reCAPTCHA, ponieważ jest to OCR-hard z definicji (ponieważ używa już błędnie skanów książek OCR) i stara się być przyjazny dla użytkownika.

Osobiście, mam tendencję do znajdź irytujące CAPTCHAS i używaj ich tylko w ostateczności, gdy użytkownik nie zalogował się wiele razy, a opóźnienia dławienia są maksymalnie ograniczone. Zdarza się to na tyle rzadko, aby było możliwe do zaakceptowania, a to wzmacnia system jako całość.

Przechowywanie haseł / weryfikacja loginów

Może to być w końcu powszechna wiedza po wszystkich wysoce nagłośnionych hakach i wyciekach danych użytkowników, które widzieliśmy w ostatnich latach, ale trzeba powiedzieć: nie przechowuj haseł w cleartext w swoim baza danych. Bazy danych użytkowników są rutynowo hakowane, wyciekały lub zbierane przez SQL injection, a jeśli przechowujesz surowe, zwykłe hasła tekstowe, to jest natychmiastowa gra skończona dla Twojego bezpieczeństwa logowania.

Więc jeśli nie możesz zapisać hasła, jak sprawdzić, czy kombinacja login+hasło zamieszczona w formularzu logowania jest poprawna? Odpowiedzią jest hashowanie za pomocą funkcji wyprowadzenia klucza . Za każdym razem, gdy tworzony jest nowy użytkownik lub zmienia się hasło, bierzesz hasło i uruchamiasz je przez KDF, takie jak Argon2, bcrypt, scrypt lub PBKDF2, zamieniając hasło cleartext ("correcthorsebatterystaple") w długi, losowy ciąg znaków, który jest o wiele bezpieczniejszy do przechowywania w bazie danych. Aby zweryfikować login, uruchamiasz tę samą funkcję skrótu na wprowadzonym haśle, tym razem przechodząc do salt i porównujesz wynikowy łańcuch skrótu do wartości przechowywanej w bazie danych. Argon2, bcrypt i scrypt przechowują sól wraz z Haszem. Sprawdź ten artykuł na sec. stackexchange, aby uzyskać więcej informacji szczegółowe informacje.

Powodem użycia soli jest to, że hashowanie samo w sobie nie jest wystarczające-będziesz chciał dodać tak zwaną "sól", aby chronić hash przedrainbow tables . Salt skutecznie zapobiega przechowywaniu dwóch haseł, które dokładnie pasują, jako tej samej wartości skrótu, zapobiegając skanowaniu całej bazy danych w jednym uruchomieniu, jeśli atakujący wykonuje atak zgadywania hasła.

Hash kryptograficzny nie powinien być używany do przechowywania haseł, ponieważ wybrane przez użytkownika hasła nie są wystarczająco silne (tzn. zazwyczaj nie zawierają wystarczającej entropii), a atak polegający na zgadywaniu haseł może zostać zakończony w stosunkowo krótkim czasie przez atakującego z dostępem do hashów. To właśnie dlatego używany jest KDF - efektywnie "rozciągnij klucz" , co oznacza, że każde odgadnięcie hasła przez atakującego wymaga wielokrotnego powtarzania algorytmu haszującego, na przykład 10 000 razy, co powoduje, że atakujący odgadnie hasło 10 000 razy wolniej.

Dane sesji - "jesteś zalogowany jako Spiderman69"

Gdy serwer zweryfikuje login i hasło w bazie danych użytkownika i znajdzie dopasowanie, system potrzebuje sposobu, aby zapamiętać, że przeglądarka została uwierzytelniona. Fakt ten powinien być przechowywany tylko po stronie serwera w danych sesji.

Jeśli nie jesteś zaznajomiony z danymi sesji, oto jak to działa: pojedynczy losowo wygenerowany ciąg jest przechowywany w wygasającym pliku cookie i używany do odwołaj się do zbioru danych-danych sesji-które są przechowywane na serwerze. Jeśli używasz frameworku MVC, jest to niewątpliwie już obsługiwane.

Jeśli to możliwe, upewnij się, że plik cookie sesji ma ustawione flagi secure i HTTP tylko po wysłaniu do przeglądarki. Flaga httponly zapewnia pewną ochronę przed odczytaniem pliku cookie przez atak XSS. Flaga secure zapewnia, że plik cookie jest wysyłany tylko za pośrednictwem HTTPS, a tym samym chroni przed sniffingiem sieci ataki. Wartość pliku cookie nie powinna być przewidywalna. Jeśli plik cookie odnosi się do nieistniejącej sesji, jego wartość powinna zostać natychmiast zastąpiona, aby zapobiec utrwaleniu sesji .

Część II: jak pozostać zalogowanym-pole wyboru "Zapamiętaj mnie"

Trwałe pliki cookie do logowania (Funkcja" Zapamiętaj mnie") są strefą zagrożenia; z jednej strony są całkowicie tak bezpieczne jak zwykłe logowanie, gdy użytkownicy rozumieją, jak z nimi postępować; a z drugiej strony strony, stanowią ogromne zagrożenie bezpieczeństwa w rękach nieostrożnych użytkowników, którzy mogą korzystać z nich na komputerach publicznych i zapomnieć się wylogować, a którzy mogą nie wiedzieć, co to są pliki cookie przeglądarki lub jak je usunąć.

Osobiście lubię trwałe logowanie do stron internetowych, które regularnie odwiedzam, ale wiem, jak sobie z nimi bezpiecznie radzić. Jeśli masz pewność, że Twoi użytkownicy wiedzą to samo, możesz używać trwałych loginów z czystym sumieniem. Jeśli nie-cóż, możesz zapisać się do filozofii użytkownicy, którzy są nieostrożni ze swoimi danymi logowania, sprowadzili to na siebie, jeśli zostaną zhakowani. To nie jest tak, że idziemy do domów naszych użytkowników i zrywamy wszystkie te facepalmowe notatki z hasłami, które ustawili na krawędzi swoich monitorów.

Oczywiście, niektóre systemy nie mogą sobie pozwolić na posiadanie żadnych zhakowanych kont; w przypadku takich systemów nie ma możliwości uzasadnienia posiadania trwałych loginów.

Jeśli zdecydujesz się wdrożyć trwałe pliki cookie logowania, tak to robisz:

  1. Po pierwsze, poświęć trochę czasu, aby przeczytać artykuł Paragon Initiative na ten temat. Będziesz musiał dobrze przygotować kilka elementów, a artykuł świetnie wyjaśnia każdy z nich.

  2. Aby powtórzyć jedną z najczęstszych pułapek, nie przechowuj trwałego pliku cookie logowania (tokena) w bazie danych, tylko jego HASH! token logowania jest odpowiednikiem hasła, więc jeśli atakujący dostał swoje hands on your database, they could use the tokens to login in to any account, like if they were they were cleartext login-password combinations. Dlatego użyj hashingu (zgodnie z https://security.stackexchange.com/a/63438/5002 słaby hash wystarczy do tego celu) podczas przechowywania trwałych tokenów logowania.

Część III: Korzystanie z tajnych pytań

Nie wdrażaj "tajnych pytań" . Funkcja "secret questions" jest anty-wzorzec bezpieczeństwa. Czytaj artykuł z linku nr 4 z listy lektur obowiązkowych. Możesz zapytać o to Sarah Palin, po jej Yahoo! konto e-mail zostało zhakowane podczas poprzedniej kampanii prezydenckiej, ponieważ odpowiedź na jej pytanie zabezpieczające brzmiała... "Wasilla High School"!

Nawet w przypadku pytań określonych przez użytkownika, jest bardzo prawdopodobne, że większość użytkowników wybierze albo:

  • "standardowe" tajne pytanie, takie jak nazwisko panieńskie matki lub ulubione zwierzę

  • Prosty kawałek ciekawostki, które każdy może podnieść ze swojego bloga, profilu LinkedIn lub podobnego

  • Każde pytanie, na które łatwiej odpowiedzieć niż odgadnięcie hasła. Co, jak na każde porządne hasło, jest każdym pytaniem, jakie można 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.

Prawdziwy powód, dla którego pytania bezpieczeństwa nawet istnieją w dziczy, że wygodnie oszczędzają koszt kilku połączeń wsparcia od użytkowników, którzy nie mogą uzyskać dostępu do poczty e-mail, aby uzyskać kod reaktywacji. To kosztem ochrony i reputacji Sary Palin. Warto? Pewnie nie.

Część IV: funkcjonalność zapomnianego hasła

Już wspomniałem, dlaczego należy nigdy nie używać pytań bezpieczeństwa do obsługi zapomnianych/utraconych haseł użytkowników; jest również oczywiste, że nigdy nie należy wysyłać e-maili do użytkowników hasła. Istnieją co najmniej dwie dodatkowe pułapki, których należy unikać w tej dziedzinie:

  1. Nie zresetuj zapomnianego hasła na autogenerowane silne hasło - takie hasła są notorycznie trudne do zapamiętania, co oznacza, że użytkownik musi je zmienić lub zapisać - powiedzmy na jasnożółtym Post-It na krawędzi monitora. Zamiast ustawiać nowe hasło, Pozwól użytkownikom od razu wybrać nowe-co i tak chcą zrobić. (Wyjątek to może być, jeśli użytkownicy są powszechnie za pomocą Menedżera haseł do przechowywania / zarządzania hasłami, które normalnie byłoby niemożliwe do zapamiętania bez zapisania go).

  2. Zawsze hashuj utracony kod/token hasła w bazie danych. AGAIN, ten kod jest kolejnym przykładem równoważnego hasła, więc musi zostać zahaszowany w przypadku, gdy atakujący dostanie się do twojej bazy danych. Gdy wymagany jest kod utraconego hasła, wyślij kod tekstowy na adres e-mail użytkownika adres, następnie hash, Zapisz hash w bazie danych -- i wyrzucić oryginalny. Podobnie jak hasło lub trwały token logowania.

Ostatnia uwaga: zawsze upewnij się, że twój interfejs do wprowadzania "kodu utraconego hasła" jest co najmniej tak samo bezpieczny jak sam formularz logowania, lub atakujący po prostu użyje tego, aby uzyskać dostęp. Dobrym początkiem jest wygenerowanie bardzo długich " kodów utraconych haseł "(na przykład 16 znaków alfanumerycznych uwzględniających wielkość liter) , ale rozważ dodanie tego samego schematu dławienia, który robisz dla samego formularza logowania.

Część V: sprawdzanie siły hasła

Po pierwsze, będziesz chciał przeczytać ten mały artykuł do sprawdzenia rzeczywistości: 500 najczęstszych haseł

Ok, więc może lista nie jest kanoniczną listą najczęstszych haseł na dowolnym systemie gdziekolwiek kiedykolwiek , ale jest to dobra oznaka tego, jak źle ludzie wybierają swoje hasła, gdy nie ma obowiązująca Polityka. Ponadto lista wygląda przerażająco blisko domu, gdy porównasz ją z publicznie dostępnymi analizami ostatnio skradzionych haseł.

Tak więc: bez minimalnych wymagań dotyczących siły haseł, 2% użytkowników używa jednego z 20 najpopularniejszych haseł. Znaczenie: jeśli atakujący podejmie tylko 20 prób, 1 na 50 kont w Twojej witrynie będzie można złamać.

Udaremnienie tego wymaga obliczenia entropii hasła, a następnie zastosowania progu. The National Instytut Norm i technologii (NIST) specjalna Publikacja 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. Wystarczy obliczyć siłę hasła i pokazanie użytkownikowi wizualnego miernika siły jest dobre, ale niewystarczające. O ile nie zostanie to wymuszone, wielu użytkowników będzie najprawdopodobniej zignoruj to.

Dla odświeżenia łatwości obsługi haseł o dużej entropii zalecane jest opracowanie Randalla Munroe ' a xkcd.

Część VI: znacznie więcej-czyli: zapobieganie próbom szybkiego logowania

Najpierw spójrz na liczby: prędkość odzyskiwania hasła - jak długo będzie Twoje hasło stać

Jeśli nie masz czasu, aby przejrzeć tabele w tym linku, oto lista oni:

  1. Złamanie słabego hasła zajmuje praktycznie nie ma czasu , nawet jeśli łamiesz je liczydłem

    {110]}
  2. Złamanie alfanumerycznego 9-znakowego hasła zajmuje praktycznie nie ma czasu , jeśli jest niewrażliwe na wielkość liter

  • Złamanie skomplikowanego hasła z symbolami, literami i cyframi, dużymi i małymi literami zajmuje praktycznie nie ma czasu, jeśli jest to mniej niż 8 znaków (komputer stacjonarny może przeszukiwanie całej przestrzeni klawiszy do 7 znaków w ciągu kilku dni lub nawet godzin)

  • Złamanie nawet sześcioznakowego hasła zajęłoby jednak zbyt dużo czasu, gdybyś był ograniczony do jednej próby na sekundę!

  • Więc czego możemy się nauczyć z tych liczb? Cóż, dużo, ale możemy skupić się na najważniejszej części: na tym, że zapobieganie dużej liczbie szybkich strzałów kolejnych prób logowania (tj. The brute Siła atak) naprawdę nie jest takie trudne. Ale zapobieganie temu right nie jest takie proste, jak się wydaje.

    Ogólnie rzecz biorąc, masz trzy opcje, które są skuteczne przeciwko atakom brute-force (i atakom słownikowym, ale ponieważ już stosujesz silną politykę haseł, nie powinny one stanowić problemu):

    • Prezentujemy CAPTCHA PO N nieudanych próbach (irytujące jak diabli i często nieskuteczne - ale powtarzam się tutaj)

    • Blokowanie kont i Wymaganie weryfikacji poczty e-mail po N nieudanych próbach (jest to DoS atak czekający na nadejście)

    • I wreszcie, Dławienie logowania: czyli ustawianie opóźnienia czasowego między próbami po N nieudanych próbach (tak, ataki DoS są nadal możliwe, ale przynajmniej są znacznie mniej prawdopodobne i dużo bardziej skomplikowane).

    Najlepsza praktyka #1: krótkie opóźnienie czasowe, które zwiększa się wraz z liczbą nieudanych prób, np.:

    • 1 nieudana próba = brak opóźnienia
    • 2 nieudane próby = 2 sek opóźnienie
    • 3 nieudane próby = opóźnienie 4 sek
    • 4 nieudane próby = 8 sekund opóźnienia
    • 5 nieudanych prób = 16 sekund opóźnienia
    • itd.
    Atak DoS na ten schemat byłby bardzo niepraktyczny, ponieważ uzyskany czas blokady jest nieco większy niż suma poprzednich czasów blokady.

    To Wyjaśnienie: opóźnienie to , a nie opóźnienie przed zwróceniem odpowiedzi do przeglądarki. Jest to bardziej jak limit czasu lub okres ogniotrwały, 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 logowaniu, a nieprawidłowe poświadczenia nie spowodują zwiększenia opóźnienia.

    Najlepsza praktyka # 2: średnie opóźnienie czasowe, które wchodzi w życie po N nieudane próby, jak:

    • 1-4 nieudane próby = brak opóźnienia
    • 5 nieudanych prób = opóźnienie 15-30 min
    DoS atakowanie tego schematu byłoby dość niepraktyczne, ale z pewnością wykonalne. Warto również zauważyć, że tak duże opóźnienie może być bardzo irytujące dla uprawnionego użytkownika. Zapominalscy użytkownicy będą cię nie lubić.

    Najlepsza praktyka #3: łączenie dwóch podejść - albo stałe, krótkie opóźnienie czasowe, które wchodzi w życie po niepowodzeniu N próby, jak:

    • 1-4 nieudane próby = brak opóźnienia
    • 5 + nieudane próby = opóźnienie 20 sek

    Lub, coraz większe opóźnienie ze stałą górną granicą, jak:

    • 1 nieudana próba = 5 sekund opóźnienia
    • 2 nieudane próby = opóźnienie 15 sek
    • 3 + nieudane próby = opóźnienie 45 sek

    Ten ostateczny schemat został zaczerpnięty z sugestii dotyczących najlepszych praktyk OWASP (link 1 z listy obowiązkowej) i powinien być uznany za najlepszy praktyka, nawet jeśli jest to co prawda po stronie restrykcyjnej.

    z reguły jednak powiedziałbym: im silniejsza jest polityka haseł, tym mniej musisz zgłaszać błędy użytkownikom z opóźnieniami. Jeśli potrzebujesz silnych (uwzględniających wielkość liter znaków alfanumerycznych + wymagane cyfry i symbole) haseł 9 + znakowych, możesz dać użytkownikom 2-4 próby nie opóźnionych haseł przed aktywacją dławienia.

    DoS atakujący ten ostatni program dławienia logowania byłby bardzo niepraktyczne. Na koniec, Zawsze zezwalaj na trwałe (cookie) loginy (i/lub formularz logowania zweryfikowany przez CAPTCHA), aby legalni użytkownicy nie zostali nawet opóźnieni podczas trwania ataku. W ten sposób bardzo niepraktyczny atak DoS staje się niezwykle niepraktycznym atakiem.

    Dodatkowo, sensowne jest bardziej agresywne Dławienie kont adminów, ponieważ są to najbardziej atrakcyjne punkty wejścia

    Część VII: rozproszone ataki Brute Force

    Tak na marginesie, bardziej zaawansowani atakujący będą starali się ominąć Dławienie logowania poprzez "rozprzestrzenianie swoich działań":
    • W przeciwieństwie do innych botnetów, które nie są w pełni kompatybilne z botnetami, nie są w pełni kompatybilne z botnetami.]}

    • Zamiast wybierać jednego użytkownika i próbować 50.000 najczęstszych haseł (których nie mogą, z powodu naszego dławienia), wybierają najczęstsze hasło i wypróbują je zamiast 50.000 użytkowników. W ten sposób nie tylko oni obejść maksimum-próby środków, takich jak CAPTCHAs i dławienie logowania, ich szansa na sukces wzrasta, jak również, ponieważ numer 1 najczęściej hasło jest znacznie bardziej prawdopodobne niż numer 49.995

    • W przeciwieństwie do innych użytkowników, nie są one w stanie samodzielnie zarządzać kontem użytkownika.]}

    Tutaj najlepszą praktyką byłoby rejestrowanie liczby nieudanych logowań w całym systemie i używanie średniej bieżącej Twojej witryny bad-częstotliwość logowania jako podstawa górnego limitu, który następnie nakładasz na wszystkich użytkowników.

    Zbyt abstrakcyjny? Powiem inaczej:

    Powiedz, że Twoja witryna miała średnio 120 złych logowań dziennie w ciągu ostatnich 3 miesięcy. Używając tego (średnia bieżąca), Twój system może ustawić globalny limit na 3 razy większy-np. 360 nieudanych prób w ciągu 24 godzin. Następnie, jeśli całkowita liczba nieudanych prób na wszystkich kontach przekroczy tę liczbę w ciągu jednego dnia (lub nawet lepiej, monitoruj wskaźnik acceleration and trigger on a calculated threshold), aktywuje systemowe Dławienie logowania-co oznacza krótkie Opóźnienia dla wszystkich użytkowników (z wyjątkiem loginów cookie i/lub kopii zapasowych loginów CAPTCHA).

    Zamieściłem również pytanie z więcej szczegółów i naprawdę dobrą dyskusję o tym, jak uniknąć trudnych pułapek w odpieraniu rozproszonych ataków brute force

    Część VIII: uwierzytelnianie dwuskładnikowe i dostawcy uwierzytelniania

    Poświadczenia mogą być naruszone, czy to przez exploity, zapisywanie i gubienie haseł, laptopy z skradzionymi kluczami lub wprowadzanie loginów do witryn phishingowych. Loginy mogą być dodatkowo chronione za pomocą uwierzytelniania dwuskładnikowego, które wykorzystuje czynniki pozapasmowe, takie jak jednorazowe kody otrzymane z połączenia telefonicznego, wiadomości SMS, aplikacji lub klucza sprzętowego. Kilku dostawców oferuje usługi uwierzytelniania dwuskładnikowego.

    Uwierzytelnianie może zostać całkowicie przekazane usłudze jednokrotnego logowania, gdzie inny dostawca zajmuje się zbieraniem poświadczeń. To popycha problem do zaufanej strony trzeciej. Google i Twitter zapewniają usługi SSO oparte na standardach, podczas gdy Facebook zapewnia podobne autorskie rozwiązanie.

    MUST-READ LINKS About Web Authentication

    1. OWASP Guide to Authentication / OWASP Authentication Cheat Sheet
    2. Dos I Don ' ts uwierzytelniania klienta w Internecie (bardzo czytelne badania MIT papier)
    3. Wikipedia: HTTP cookie
    4. pytania dotyczące wiedzy osobistej do uwierzytelniania awaryjnego: pytania bezpieczeństwa w erze Facebook (bardzo czytelny artykuł Berkeley research paper)
     3536
    Author: Jens Roland,
    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
    2018-07-18 16:31:15

    Ostateczny Artykuł

    Wysyłanie poświadczeń

    Jedynym praktycznym sposobem wysyłania poświadczeń w 100% bezpiecznie jest użycie SSL. Używanie JavaScript do hashowania hasła nie jest bezpieczne. Najczęstsze pułapki hashowania haseł po stronie klienta:

    • Jeśli połączenie między Klientem a serwerem jest niezaszyfrowane, wszystko, co robisz, jest podatne na ataki typu man-in-the-middle . Atakujący może zastąpić przychodzący javascript, aby przerwać haszowanie lub wysłać wszystkie poświadczenia do ich serwera, mogli słuchać odpowiedzi klientów i podszywać się pod użytkowników doskonale, itp. itd. Protokół SSL z zaufanymi urzędami certyfikującymi ma na celu zapobieganie atakom MitM.
    • hashowane hasło odebrane przez serwer jest mniej bezpieczne Jeśli nie wykonasz dodatkowej, nadmiarowej pracy na serwerze.

    Istnieje inna bezpieczna metoda o nazwie SRP , ale jest opatentowana (chociaż jest to na licencji) i jest niewiele dobrych dostępne wdrożenia.

    Przechowywanie haseł

    Nigdy nie przechowuj haseł jako zwykłego tekstu w bazie danych. Nawet jeśli nie dbasz o bezpieczeństwo własnej witryny. Załóżmy, że niektórzy użytkownicy ponownie użyją hasła do swojego internetowego konta bankowego. Przechowuj zaszyfrowane hasło i wyrzuć oryginał. I upewnij się, że hasło nie pojawia się w dziennikach dostępu lub dziennikach aplikacji. OWASP zaleca stosowanie Argon2 jako pierwszego wyboru dla nowych aplikacje. Jeśli to nie jest dostępne, zamiast tego należy użyć PBKDF2 lub scrypt. I na koniec, jeśli żadne z powyższych nie jest dostępne, użyj bcrypt.

    Hasze same w sobie również są niepewne. Na przykład, identyczne hasła oznaczają identyczne hasze-to sprawia, że tabele wyszukiwania hash są skutecznym sposobem łamania wielu haseł jednocześnie. Zamiast tego przechowuj solony hash. Salt to ciąg znaków dołączany do hasła przed hashowaniem - użyj innej (losowej) soli na użytkownika. Sól jest wartość publiczna, dzięki czemu można przechowywać je z hash w bazie danych. Zobacz tutaj aby dowiedzieć się więcej na ten temat.

    Oznacza to, że nie możesz wysłać użytkownikowi zapomnianych haseł (ponieważ masz tylko hash). Nie Resetuj hasła użytkownika, dopóki nie uwierzytelnisz użytkownika (Użytkownicy muszą udowodnić, że są w stanie odczytać wiadomości e-mail wysłane na przechowywany (i zweryfikowany) adres e-mail.)

    Pytania bezpieczeństwa

    Pytania bezpieczeństwa są niebezpieczne-unikaj ich używania. Dlaczego? Anything a pytanie zabezpieczające robi, hasło robi lepiej. Czytaj Część III: Korzystanie z tajnych pytań w @ Jens Roland odpowiedz tutaj w tej wiki.

    Sesyjne pliki cookie

    Po zalogowaniu się, serwer wysyła użytkownikowi plik cookie sesji. Serwer może pobrać nazwę użytkownika lub id z pliku cookie, ale nikt inny nie może wygenerować takiego pliku cookie(aby wyjaśnić mechanizmy).

    Pliki cookie mogą zostać przechwycone: są tak bezpieczne, jak reszta klientów Maszyny i inne środki komunikacji. Mogą być odczytywane z dysku, wąchane w ruchu sieciowym, podnoszone przez atak skryptów między stronami, phished z zatrutego DNS więc klient wysyła swoje pliki cookie do niewłaściwych serwerów. Nie wysyłaj trwałych plików cookie. Pliki cookie powinny wygasnąć po zakończeniu sesji klienta(zamknięcie przeglądarki lub opuszczenie domeny).

    Jeśli chcesz autologować użytkowników, możesz ustawić trwały plik cookie, ale powinien on różnić się od pliku cookie pełnej sesji. Możesz ustawić dodatkowa flaga, że użytkownik ma automatycznie zalogowany i musi zalogować się na żywo dla wrażliwych operacji. Jest to popularne wśród witryn zakupowych, które chcą zapewnić Ci bezproblemowe, spersonalizowane zakupy, ale nadal chronić Twoje dane finansowe. Na przykład, po powrocie do odwiedzenia Amazon, pokazują one stronę, która wygląda jakbyś był zalogowany, ale kiedy idziesz do złożenia zamówienia (lub zmienić adres wysyłki, kartę kredytową ITP.), proszą o potwierdzenie swojego hasło.

    [4]}strony finansowe, takie jak banki i Karty kredytowe, z drugiej strony, mają tylko poufne dane i nie powinny zezwalać na Automatyczne logowanie lub tryb niskiego poziomu bezpieczeństwa.

    Lista zasobów zewnętrznych

     394
    Author: Michiel de Mare,
    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
    2018-03-07 06:35:31

    Po pierwsze, mocne zastrzeżenie, że ta odpowiedź nie jest najlepsza dla tego pytania. To zdecydowanie nie powinna być najlepsza odpowiedź!

    Wspomnę o proponowanym przez MozillęBrowserID (a może dokładniej, Verified Email Protocol ) w duchu znalezienia ścieżki uaktualnienia do lepszego podejścia do uwierzytelniania w przyszłości.

    Podsumuję to w ten sposób:

    1. Mozilla jest organizacją non-profit z wartościami , które dobrze się zgadzają ze znalezieniem dobrych rozwiązań tego problemu.
    2. W dzisiejszych czasach większość stron internetowych korzysta z uwierzytelniania opartego na formularzach.]}
    3. uwierzytelnianie oparte na formularzach ma dużą wadę, którą jest zwiększone ryzyko phishingu. Użytkownicy są proszeni o wprowadzenie poufnych informacji do obszaru kontrolowanego przez zdalny podmiot, a nie obszaru kontrolowanego przez ich agenta użytkownika (przeglądarkę).
    4. ponieważ przeglądarki są niejawnie zaufane (cała idea agenta użytkownika polega na działaniu w imieniu Użytkownika), mogą pomóc poprawić tę sytuację.
    5. główną siłą powstrzymującą postęp tutaj jest impas rozmieszczenia . Rozwiązania muszą być rozłożone na etapy, które same w sobie przynoszą pewne przyrostowe korzyści.
    6. najprostszą zdecentralizowaną metodą wyrażania tożsamości, która jest wbudowana w infrastrukturę internetową, jest nazwa domeny.
    7. Jako drugi poziom wyrażania tożsamości, każda domena zarządza własnym zestawem kont.
    8. formularz "account@domain" jest zwięzły i obsługiwany przez szeroki zakres protokołów i schematów URI. Taki identyfikator jest oczywiście najbardziej powszechnie rozpoznawany jako adres e-mail.
    9. dostawcy poczty e-mail są już de facto głównymi dostawcami tożsamości online. Bieżące Resetowanie hasła zazwyczaj pozwala przejąć kontrolę nad Kontem, jeśli możesz udowodnić, że kontrolujesz powiązany z nim adres e-mail.
    10. sprawdzony protokół e-mail został zaproponowany, aby zapewnić bezpieczną metodę, opartą na kryptografii klucza publicznego, w celu usprawnienia procesu udowodnienia domenie B, że masz konto w domenie A.
    11. W przypadku przeglądarek, które nie obsługują protokołu Verified Email (obecnie wszystkie), Mozilla udostępnia shim, który implementuje protokół w kodzie JavaScript po stronie klienta. W przypadku usług poczty e-mail, które nie obsługują protokołu Verified Email, protokół pozwala stronom trzecim działać jako zaufany pośrednik, potwierdzając, że zweryfikowały własność użytkownika konta. Nie jest pożądane posiadanie dużej liczby takich stron trzecich; ta zdolność ma na celu jedynie umożliwienie ścieżki uaktualnienia, i jest znacznie preferowane, aby usługi e-mail dostarczały te twierdzenia same. [12]}Mozilla oferuje swoją własną usługę, aby działać jako zaufana strona trzecia. Dostawcy usług (tj. strony ufające) wdrażający protokół zweryfikowanych wiadomości e-mail mogą zdecydować się zaufać twierdzeniom firmy Mozilla lub nie. Usługa Mozilli weryfikuje własność kont użytkowników za pomocą tradycyjny sposób wysyłania wiadomości e-mail z linkiem potwierdzającym.
    12. usługodawcy mogą oczywiście oferować ten protokół jako opcję oprócz innych metod uwierzytelniania, które chcieliby zaoferować.
    13. dużą zaletą interfejsu użytkownika jest "selektor tożsamości". Kiedy użytkownik odwiedza witrynę i decyduje się na uwierzytelnienie, jego przeglądarka pokazuje mu wybór adresów e-mail ("osobisty", "praca", "Aktywizm polityczny" itp.) mogą posłużyć do identyfikacji siebie na stronę.
    14. kolejną dużą korzyścią dla interfejsu użytkownika jest pomoc przeglądarce dowiedzieć się więcej o sesji użytkownika – kto jest zalogowany jako obecnie, przede wszystkim-więc może wyświetlać to w przeglądarce chrome.
    15. ze względu na rozproszony charakter tego systemu, unika blokady do głównych stron, takich jak Facebook, Twitter, Google, itp. Każda osoba może posiadać własną domenę, a zatem działać jako własna tożsamość dostawca.

    Nie jest to ściśle "uwierzytelnianie oparte na formularzach dla stron internetowych". Jest to jednak próba przejścia od obecnej normy uwierzytelniania opartego na formularzach do czegoś bardziej bezpiecznego: uwierzytelniania obsługiwanego przez przeglądarkę.

     148
    Author: Charlie,
    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-11-07 19:12:50

    Pomyślałem, że podzielę się tym rozwiązaniem, które okazało się działać dobrze.

    Nazywam to pole atrapy (choć tego nie wymyśliłem, więc mi nie kredytuj).

    W skrócie: musisz tylko wstawić to do swojego <form> i sprawdzić, czy jest puste w momencie walidacji:

    <input type="text" name="email" style="display:none" />
    

    Sztuką jest oszukać bota, aby myślał, że musi wstawić dane do wymaganego pola, dlatego nazwałem wejście "e-mail". Jeśli masz już pole o nazwie e-mail, że jesteś korzystanie należy spróbować nazwać pole obojętne coś innego jak "Firma", "Telefon" lub "emailaddress". Po prostu wybierz coś, o czym wiesz, że nie potrzebujesz i co brzmi jak coś, co ludzie normalnie uznaliby za logiczne, aby wypełnić formularz internetowy. Teraz Ukryj pole input za pomocą CSS lub JavaScript / jQuery-cokolwiek pasuje Ci najlepiej-po prostu Nie Ustaw wejście type na hidden albo bot na to nie wpadnie.

    Podczas walidacji formularza (po stronie klienta lub serwera) sprawdź, czy twoje pole atrapy zostało wypełnione, aby określić, czy zostało wysłane przez człowieka czy bota.

    Przykład:

    W przypadku człowieka: Użytkownik nie zobaczy pola atrapy (w moim przypadku o nazwie "email") i nie spróbuje go wypełnić. Tak więc wartość pola atrapy powinna być nadal pusta, gdy formularz został wysłany.

    W przypadku bota: bot zobaczy pole o typie text i nazwie email (czy jak to nazwałeś) i logicznie spróbuje wypełnij go odpowiednimi danymi. Nie obchodzi mnie, czy stylizowałeś formularz wejściowy za pomocą fantazyjnego CSS, Programiści internetowi robią to cały czas. Niezależnie od wartości w polu atrapy, nie obchodzi nas to, o ile jest ono większe niż 0.

    Użyłem tej metody na księdze gości w połączeniu z CAPTCHA i od tego czasu nie widziałem ani jednego spamu. Wcześniej używałem tylko rozwiązania CAPTCHA, ale ostatecznie spowodowało to około pięciu postów spamu co godzinę. Dodawanie pola atrapa w formularz przestał (przynajmniej do tej pory) pojawiać się cały spam.

    Wierzę, że może być również używany w sam raz z formularzem logowania/uwierzytelniania.

    Warning: oczywiście ta metoda nie jest w 100% niezawodna. Boty mogą być zaprogramowane tak, aby ignorowały pola wejściowe z zastosowanym do nich stylem display:none. Trzeba też pomyśleć o osobach, które używają jakiejś formy autouzupełniania(jak większość przeglądarek ma wbudowane!), aby automatycznie wypełnić wszystkie pola formularza dla nich. Równie dobrze mogą wybrać w górę pola.

    Możesz również zmienić to nieco, pozostawiając pole atrapy widoczne, ale poza granicami ekranu, ale to całkowicie zależy od Ciebie.

    Bądź kreatywny!
     121
    Author: Pieter888,
    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-11-13 04:19:49

    Nie sądzę, że powyższa odpowiedź jest "błędna", ale istnieją duże obszary uwierzytelniania, które nie są poruszane (a raczej nacisk kładzie się na" jak wdrożyć sesje cookie", a nie na"jakie opcje są dostępne i jakie są kompromisy".

    Moje sugerowane edycje / odpowiedzi to

    • problem polega bardziej na konfiguracji konta niż sprawdzaniu hasła.
    • stosowanie authenizacji dwuskładnikowej jest o wiele bezpieczniejsze niż sprytniejsze środki haseł szyfrowanie
    • Nie próbuj implementować własnego formularza logowania lub przechowywania haseł w bazie danych, chyba że Zapisywane dane są bezwartościowe przy tworzeniu konta i generowane samodzielnie (czyli w stylu web 2.0, takim jak Facebook, Flickr itp.)

      1. Digest Authentication to podejście oparte na standardach obsługiwane we wszystkich głównych przeglądarkach i serwerach, które nie wysyła hasła nawet przez bezpieczny kanał.

    Pozwala to uniknąć konieczności posiadania "sesji" lub pliki cookie, ponieważ sama przeglądarka za każdym razem ponownie szyfruje komunikację. Jest to najbardziej "lekkie" podejście do rozwoju.

    Jednak nie polecam tego, z wyjątkiem publicznych usług o niskiej wartości. Jest to problem z niektórymi innymi odpowiedziami powyżej - nie próbuj ponownie zaimplementować mechanizmów uwierzytelniania po stronie serwera - ten problem został rozwiązany i jest obsługiwany przez większość głównych przeglądarek. Nie używaj plików cookie. Nie przechowuj niczego we własnej ręcznie zwijanej bazie danych. Wystarczy zapytać, per żądanie, jeśli żądanie jest autentyczne. Wszystko inne powinno być obsługiwane przez konfigurację i zaufane oprogramowanie innych firm.

    Więc ...

    Najpierw mylimy początkowe założenie konta (z hasłem) z ponowne sprawdzenie hasła. Jeśli jestem Flickr i tworzenie witryny po raz pierwszy, nowy użytkownik ma dostęp do wartości zerowej (pusta przestrzeń internetowa). Naprawdę nie obchodzi mnie, czy osoba tworząca konto kłamie o swoim imieniu. If I am tworząc konto w Intranecie / Ekstranecie szpitalnym, wartość leży we wszystkich aktach medycznych, więc ja dbam o tożsamość ( * ) twórcy konta.

    To jest bardzo, bardzo trudna część. tylko przyzwoitym rozwiązaniem jest sieć zaufania. Na przykład, dołączasz do szpitala jako lekarz. Tworzysz stronę internetową hostowaną gdzieś ze zdjęciem, numerem paszportu i kluczem publicznym, a wszystkie hashujesz kluczem prywatnym. Następnie odwiedzisz szpital i administrator systemu patrzy na twój paszport, widzi, czy zdjęcie pasuje do ciebie, a następnie hashuje stronę internetową / zdjęcie za pomocą klucza prywatnego szpitala. Od teraz możemy bezpiecznie wymieniać się kluczami i tokenami. Jak każdy, kto ufa szpitalowi (jest tajny sos BTW). Administrator systemu może również udostępnić klucz sprzętowy RSA lub inne uwierzytelnianie dwuskładnikowe.

    Ale to jest dużo kłopotów, a nie bardzo web 2.0. Jest to jednak jedyny bezpieczny sposób na stworzenie nowe konta, które mają dostęp do cennych informacji, które nie są tworzone samodzielnie.

    1. Kerberos i SPNEGO - mechanizmy pojedynczego logowania z zaufaną stroną trzecią-w zasadzie użytkownik weryfikuje przed zaufaną stroną trzecią. (NB to nie jest w żaden sposób nie można ufać OAuth)

    2. SRP - rodzaj sprytnego uwierzytelniania hasłem bez zaufanej strony trzeciej. Ale tutaj wchodzimy w sfery " bezpieczniej jest używać dwóch czynników uwierzytelnianie, nawet jeśli jest droższe "

    3. SSL po stronie klienta-daje klientom certyfikat klucza publicznego (wsparcie we wszystkich głównych przeglądarkach-ale rodzi pytania dotyczące bezpieczeństwa maszyny klienckiej).

    W końcu jest to kompromis-jaki jest koszt naruszenia bezpieczeństwa a koszt wdrożenia bardziej bezpiecznych podejść. Pewnego dnia możemy zobaczyć odpowiednie PKI powszechnie akceptowane, a więc nie ma już własnych zwijanych formularzy uwierzytelniających i baz danych. Pewnego dnia...

     71
    Author: you cad sir - take that,
    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-11-09 16:56:07

    Podczas haszowania nie używaj szybkich algorytmów haszujących, takich jak MD5 (istnieje wiele implementacji sprzętowych). Użyj czegoś w stylu SHA-512. W przypadku haseł wolniejsze skróty są lepsze.

    Im szybciej stworzysz hasze, tym szybciej będzie działał każdy Tester brute force. Wolniejsze skróty spowolnią brutalne wymuszanie. Algorytm slow hash sprawi, że brutalne wymuszanie będzie niepraktyczne dla dłuższych haseł (8 cyfr+)

     48
    Author: josh,
    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-04 18:09:35

    Dobry artykuł o realistycznym szacowaniu siły hasła to:

    Dropbox Tech Blog "Blog Archive" Zxcvbn: realistyczne szacowanie siły hasła

     47
    Author: blade19899,
    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-24 18:26:40

    Moja ulubiona zasada w odniesieniu do systemów uwierzytelniania: używaj haseł, nie haseł. Łatwe do zapamiętania, trudne do złamania. Więcej informacji: kodowanie horroru: hasła a hasła

     42
    Author: blade19899,
    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-12-19 12:44:52

    Chciałbym dodać jedną sugestię, której użyłem, opartą na głębokiej obronie. Nie musisz mieć tego samego systemu auth&auth dla administratorów, co zwykli użytkownicy. Możesz mieć osobny formularz logowania na osobnym adresie URL, wykonując osobny kod dla żądań, które przyznają wysokie uprawnienia. Ten może dokonywać wyborów, które byłyby całkowitym bólem dla zwykłych Użytkowników. Jednym z takich, których użyłem, jest szyfrowanie adresu URL logowania dla dostępu administratora i wysyłanie adminowi nowego adresu URL. Zatrzymuje wszelkie ataki brute force w prawo z dala, ponieważ Twój nowy adres URL może być arbitralnie trudny (bardzo długi losowy ciąg), ale jedyną niedogodnością Twojego administratora jest link w wiadomości e-mail. Napastnik nie wie już, gdzie w ogóle wysłać wiadomość.

     20
    Author: Iain Duncan,
    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-07-18 01:18:52

    Nie wiem, czy najlepiej było odpowiedzieć na to jako odpowiedź, czy jako komentarz. Zdecydowałem się na pierwszą opcję.

    Odnośnie poing Część IV: Forgotten Password Functionality w pierwszej odpowiedzi chciałbym zwrócić uwagę na ataki czasowe.

    W formularzach Zapamiętaj swoje hasło atakujący może potencjalnie sprawdzić pełną listę wiadomości e-mail i wykryć, które są zarejestrowane w systemie(patrz link poniżej).

    Odnośnie formularza zapomnianego hasła, I dodam, że dobrym pomysłem jest wyrównanie czasów między udanymi i niezaspokojonymi zapytaniami z pewną funkcją opóźnienia.

    Https://crypto.stanford.edu/ ~ dabo / papers / webtiming. pdf

     12
    Author: xyz,
    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-08-16 17:31:35

    Chciałbym dodać jeden bardzo ważny komentarz:

    • "w korporacyjnym, intra - ustawienie netto," większość, jeśli nie wszystkie z powyższych może nie mieć zastosowania!

    Wiele korporacji wdraża strony internetowe "tylko do użytku wewnętrznego", które w praktyce są" aplikacjami korporacyjnymi", które zostały zaimplementowane za pomocą adresów URL. Te adresy URL mogą (podobno ...) być rozwiązywane tylko w ramach " wewnętrznej sieci firmy." (która sieć magicznie obejmuje wszystkie VPN-connected " road warriors.')

    Gdy użytkownik jest obowiązkowo podłączony do wspomnianej sieci, jego tożsamość ("uwierzytelnianie") jest już [...] "definitywnie znane", podobnie jak ich pozwolenie ("upoważnienie") na robienie pewnych rzeczy ... na przykład ... "aby uzyskać dostęp do tej strony internetowej."

    Ta usługa "uwierzytelniania + autoryzacji" może być dostarczana przez kilka różnych technologii, takich jak LDAP (Microsoft OpenDirectory) lub Kerberos.

    Z twojego punkt widzenia, po prostu wiesz o tym: że każdy kto legalnie ląduje na twojej stronie musi towarzyszyć [zmienna środowiskowa magicznie zawierająca ...] a " token."(tj. brak takiego znaku musi być natychmiastową podstawą 404 Not Found.)

    Wartość tokena nie ma dla Ciebie sensu, ale jeśli zajdzie taka potrzeba, "istnieją odpowiednie środki", za pomocą których Twoja strona internetowa może "[autorytatywnie] zapytać kogoś, kto wie (LDAP... itd.) "o dowolnym i każdy(!) pytanie, które możesz mieć. Innymi słowy, robisz a nie korzystasz z jakiejkolwiek "domowej logiki."Zamiast tego pytacie o władzę i bezgranicznie ufacie jej werdyktowi.

    Uh huh ... to jest całkiem mentalny przełącznik z " dzikiego i wooly Internetu."
     10
    Author: Mike Robinson,
    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-08-13 23:09:36

    Użyj OpenID Connect lub Dostęp zarządzany przez użytkownika .

    Ponieważ nic nie jest bardziej efektywne niż nie robienie tego w ogóle.

     5
    Author: jwilleke,
    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-08-10 13:27:44