2009-07-23 9 views
5

Jestem nowy w SSL, cokolwiek czytam i wiem, że jego płatny certyfikat cyfrowy i po użyciu SSL w witrynie https: // transfer danych jest bezpieczny w warstwie sieciowej.Bezpieczne poświadczenia logowania bez użycia SSL

W mojej aplikacji nie mam wiele obaw dotyczących bezpieczeństwa poza loginem i hasłem.

Czy istnieje jakiś sposób, aby chronić loginname i hasło bez użycia SSL https: //

+1

Tak, ale to nie jest dobra ochrona. Atak typu "man-in-the-middle" może łatwo złamać ten mechanizm bezpieczeństwa. –

Odpowiedz

3

Istnieje wiele schematów uwierzytelniania, które mogą działać bezpiecznie na zwykłym HTTP. Najczęściej spotykany z nich to Digest, obsługiwany przez wszystkie główne przeglądarki internetowe i praktycznie każdą platformę programowania sieciowego.

dół ubocznym stosowania Digest dla stron internetowych jest to, że:

  • Uwierzytelnianie jest obsługiwane przez przeglądarkę, a nie samą stronę logowania na stronie internetowej, która nie wygląda prawie tak ładny i nie pozwala, aby wszystkie otaczające funkcje pomocnicze były takie jak "zapomniałeś hasła?" których obecnie oczekujemy.

  • Jeśli nie masz połączenia SSL, doświadczeni użytkownicy mogą czuć się zaniepokojeni, że wysyłają swoje hasło w sposób niezawodny (nawet jeśli nie są), ponieważ zostali przeszkoleni w zakresie wyszukiwania połączenia SSL przy wprowadzaniu poświadczeń.

Istnieją inne systemy takie jak OAuth które również są bezpieczne nad zwykłym HTTP, ale to jest naprawdę więcej niż API dla stron internetowych, więc prawdopodobnie nie jest to, co chcesz.

+2

Digest nie jest dokładnie bezpieczny. Ktoś, kto widzi ruch przechodzący pomiędzy komputerami, może nadal przechwytywać przefermentowane hasło, a także udawać/modyfikować żądanie HTTP za pomocą strawionego hasła i nadal uzyskiwać dostęp do tej witryny. – tschaible

+0

Podobne problemy pojawiają się w przypadku większości innych schematów uwierzytelniania. Uwierzytelnianie oparte na tokenach, takie jak wydawanie ciasteczek uwierzytelniających, może również zostać przechwycone i sfałszowane; sposób ich złagodzenia polega na tym, aby wygasić token (Digest robi to z nonce). Nic nie jest naprawdę bezpieczne, chyba że wszystkie połączenia są dokonywane przez SSL (a nawet wtedy, to nie jest naprawdę bezpieczne!). –

+0

Ohh mam odpowiedź, wydaje się dobrze. Możemy wygenerować wartość skrótu hasła (zaszyfrowanego) u klienta za pomocą algorytmu MD5. i dla tego serwera musi przekazać klucz wartości losowej do klienta, gdy istnieje żądanie strony logowania za pomocą tego klucza po stronie klienta możemy zaszyfrować hasło i wysłać je do serwera. Jak serwer zna klucz i dlatego może go odszyfrować. Myślę, że to rozwiązanie jest dobre. Jakie jest Twoje zdanie? –

1

Certyfikat może być self podpisane jeden. Niekoniecznie być płatnym :)

+0

Sir, możesz podać mi więcej informacji, abym mógł skorzystać z darmowego cyfrowego certyfikatu na mojej stronie. Jak mogę go skonfigurować na stronie internetowej? –

+1

Istnieje również cacert.org wydają bezpłatne certyfikaty. Domyślnie nie są zaufane przez przeglądarki, ale jest to lepsze niż samodzielne podpisywanie. – stribika

1

Możesz także spróbować StartSSL.Org Używam że obecnie i działa świetnie nawet, ale jakoś tak samo jak CAcert.org, nie są zaufane przez przeglądarek domyślnie

2

nie ma alternatywy dla Zabezpieczenia HTTP w przeglądarce inne niż przy użyciu protokołu SSL dla każdej strony, na której zalogowany jest użytkownik. Wszelkie inne techniki są całkowicie niezabezpieczone i są niczym innym jak warstwami niejasności.

Każde rozwiązanie homebrew za pośrednictwem protokołu HTTP jest zawsze narażone na ataki MITM i inne luki.

Mechanizm sesji logowania & nawet przy użyciu protokołu SSL musi być bezpieczny lub może zostać złamany przy użyciu innych exploitów.

0

wyłączyć temat, można uzyskać własny (podpisany) certyfikat za pomocą openssl.

Najpierw należy wygenerować klucz RSA i raport CSR, aby wygenerować certyfikat z podpisem własnym. Na komputerze z systemem Linux z zainstalowanym OpenSSL:

openssl genrsa -des3 -out mydomain.key 1024 

openssl req -new -key mydomain.key -out mydomain.csr // fill in the details 

mv mydomain.key mydomain.key.org 

openssl rsa -in mydomain.key.org -out mydomain.key  // creates passphraseless key 

openssl x509 -req -days 365 -in mydomain.csr -signkey mydomain.key -out mydomain.crt 
0

Hmmm, nienawidzę aby otworzyć stary wątek, ale nie widzę tego jako dokładne.

Przyznaję, że trudno jest pokonać sprawdzalny certyfikat, ale dość często ludzie używają samopodpisanych certyfikatów na stronach testowych. Jestem pewien, że proste rozwiązanie homebrew może być tak samo dobre jak samopodpisany certyfikat.

Heck, powiem nawet, że z niewielkim wstępem na klawisze (lub coś w rodzaju gpg) może być równie bezpieczny.

+0

Czy możesz podać referencje, które potwierdzają Twoje roszczenia? Jeśli to prawda, będą bardzo interesujące. – Lizz

Powiązane problemy