2016-09-27 33 views
5

Niedawno przeczytałem następujące article o Techniki uwierzytelniania w aplikacjach AngularJS. Jego koncepcja jest podobna do tego, jak zwykle podchodzę do tego procesu, ale sposób, w jaki hasło jest wiązane do kontrolera w przejrzystym tekście, wydaje mi się wadą bezpieczeństwa i zastanawiałem się, jakie są lepsze sposoby podejścia do tego?Jak poprawnie zabezpieczyć hasło w AngularJS

<input type="password" id="password" ng-model="credentials.password"> 

Jednym ze sposobów, jak sądzę, jest zaszyfrowanie haseł związanych z kontrolerem? czy jest jakiś sposób na zrobienie tego?

+0

Widziałeś już to? https://stackoverflow.com/questions/18959962/how-to-store-password-in-angularjs-securely – Jireugi

+0

Nie ma znaczenia, czy hasło jest w postaci zwykłego tekstu na stronie klienta, czy w żądaniu * (które powinno być zrobione przy użyciu SSL i POST) *, ponieważ klient zna już hasło, a jeśli ktoś złamie szyfrowanie SSL, to i tak masz poważniejsze problemy, a nawet jeśli nie masz SSL, jeśli ktoś może złapać żądanie, robi to Bez względu na to, czy złapią prawdziwe hasło lub zakodowane hasło od klienta, nadal będą mieli dostęp do tego konta. – adeneo

Odpowiedz

1

Moi 5 centów do dyskusji:

1) Kontroler istnieje tylko w czasie, gdy widok logowanie istnieje. Po przesłaniu danych logowania zazwyczaj zmieniasz widok, niszcząc kontroler.

2) Nawet gdyby istniał przez cały czas trwania sesji, potrzebny byłby dość złożony schemat z xss, aby uzyskać dostęp do danych.

3) Ponadto, masz kilka elementów, aby zminimalizować ryzyko nawet dalej:

  • użycie https

  • użytku podpisane certyfikaty serwera po stronie serwera

(jeśli używasz protokołu https, to przeglądarka nie powinna zezwalać na wysyłanie wywołania ajax do zasobu http, a żądania https nie powiedzie się, jeśli certyfikat nie zostanie podpisany, a wyjątek nie został dodany dla strona)

4) Na koniec możesz rozważyć użycie oAuth do uwierzytelnienia, jeśli serwer go obsługuje.

5) Ofc. Wszystko zależy od poziomu bezpieczeństwa, którego wymaga twoja aplikacja. Jeśli naprawdę martwisz się, że ktoś dostanie hasło, podczas gdy dana osoba znajduje się poza maszyną, należy rozważyć inne podejście do uwierzytelniania, takie jak: certyfikaty klienta (na kartach inteligentnych) lub dodatkowe kody jednorazowe lub coś innego. podobny.