2009-01-10 15 views
10

Jakie są zalety korzystania z HTTP authentication with PHP (nagłówki HTTP 401) zamiast korzystania z normalnego uwierzytelniania formularza?zalety "Uwierzytelniania HTTP za pomocą PHP"

+0

Użycie uwierzytelniania opartego na sesjach (i formularzu), które jest przede wszystkim wygodniejsze. Możesz rzucić okiem na https://github.com/delight-im/PHP-Auth, który jest zarówno agnostyczny, jak i agnostyczny. – caw

Odpowiedz

12

Z punktu widzenia bezpieczeństwa, zarówno forma oparta i HTTP Basic Access Authentication użycie zwykłego tekstu do wysyłania danych uwierzytelniających. (Oczywiście, HTTP Basic Auth dodatkowo używa Base64, ale to nie jest problem.)

Podczas gdy HTTP Basic Auth wysyła dane uwierzytelniające dla każdego żądania, uwierzytelnianie oparte na formularzach wysyła dane uwierzytelniające tylko wtedy, gdy formularz jest wysyłany (pamiętaj: oba w postaci zwykłego tekstu). Zwykle sesje są używane do utrzymywania stanu podczas korzystania z uwierzytelniania opartego na formularzu.

Jeśli chcesz skorzystać z jednego z nich, pamiętaj, aby zaszyfrować połączenie przy użyciu protokołu HTTPS, aby zapobiec podsłuchiwaniu i man-in-the-middle attacks. A gdy wybierzesz wersję opartą na formularzu i sesji, pamiętaj o zabezpieczeniu obsługi sesji, aby zapobiec lub przynajmniej wykryć oszustwa sesyjne, takie jak Session Hijacking i Session Fixation.

Ostatni wariant to HTTP Digest Access Authentication. Główną różnicą między tym a podstawowym jest to, że Digest to challenge-response authentication, podczas gdy klient musi spełnić żądanie na każde żądanie, a odpowiedź to tylko skrót MD5. Dlatego nie są wysyłane dane uwierzytelniające w postaci zwykłego tekstu.

8

Twoje pytanie jest trochę niejasne, ale ogólna odpowiedź brzmi, że użycie tej metody zapewnia bardziej "restycyjną" implementację, zgodną z tym, co jest już dobre w HTTP. W takim przypadku wyrzucenie 401 jest czymś, co wiedzą o tym inni serwery WWW, serwery WWW i przeglądarki internetowe. Jeśli tylko wypluwasz formularz HTML, jest on dostępny tylko dla użytkownika końcowego, podczas gdy używanie kodów stanu HTTP umożliwia interakcję z maszyną.

Polecam sprawdzenie, czy nie jest to serwer HTTP, który należy do domeny http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol. Myślę, że powinno to wszystko nadać sens.

-1

Tworzysz strony internetowe? jeśli tak, to użyj znacznika w postaci > .. jest ładniejszy;)

Tworzysz aplikacje dostępne dla innych aplikacji i wysyłasz niektóre dane? Następnie użyj autoryzacji HTTP.

O ile mi wiadomo, nie ma dużej różnicy pod względem bezpieczeństwa, szybkości czy czegokolwiek ... jest to po prostu brzydkie i łatwiejsze do wdrożenia.

0

Jako przykład tego, co powiedziałem revolutiontrigger, najczęściej korzystam z uwierzytelniania HTTP w kanałach RSS dla stron korzystających z uwierzytelniania opartego na formularzach, po prostu dlatego, że wiele czytników RSS może wykonywać autoryzację HTTP, ale nie może wykonywać uwierzytelniania opartego na formularzach.

Powiązane problemy