2011-11-07 16 views
7

Piszę aplikację internetową w Django, która jest powiązana z Read it Later List API (http://readitlaterlist.com/api/docs/). Jednak wszystkie wywołania interfejsu API wymagają wysyłania nazwy użytkownika i hasła przy każdym żądaniu. W tym celu wydaje się, że muszę przechowywać hasło użytkownika w postaci zwykłego tekstu w mojej bazie danych. Czy brakuje mi czegoś lub czy jest to jedyne możliwe podejście w tym przypadku? Czy istnieje sposób przechowywania zaszyfrowanego hasła w mojej bazie danych, ale mimo to możliwość wysłania odszyfrowanej wersji podczas wykonywania wywołania API? Jeśli nie, to czy istnieją jakieś dobre praktyki, które powinienem zastosować, aby zabezpieczyć hasło użytkownika?Jaki jest najlepszy sposób przechowywania hasła w bazie danych, gdy wywołanie interfejsu API wymaga wysłania hasła w postaci zwykłego tekstu?

Jestem pewien, że nie może to być jedyna usługa wymagająca wysyłania hasła w postaci zwykłego tekstu. Chciałbym wiedzieć, jak programiści radzą sobie z tego rodzaju usługami w ogóle. Jestem nowy w tworzeniu stron internetowych, więc każda pomoc lub wskazówki są mile widziane.

+0

Zadałem podobne pytanie: http://stackoverflow.com/questions/5791083/django-facebook-security-design-for-a-facebook-webapp-atforms-a-third –

Odpowiedz

4

Nigdy nie zapisuj hasła w postaci zwykłego tekstu. Możesz zaszyfrować i odszyfrować hasło, ale problem polega na tym, że klucz używany do szyfrowania i odszyfrowywania będzie ogólnie dostępny dla każdego, kto uzyskał dostęp do twojego serwera, więc nie jest bezpieczny.

Alternatywą jest poproszenie ich o wpisanie hasła i zapisanie go w zaszyfrowanym pliku cookie, zmiennym sesji lub innym, który wygaśnie po wylogowaniu się z aplikacji. Ma to tę wadę, że muszą wprowadzać swoje hasło za każdym razem, gdy użytkownik używa aplikacji.

+0

Zmienna sesji/zaszyfrowane pliki cookie dźwięk obiecujący. Zajrzę do tych. Dzięki. – Alinium

7

Czy użytkownicy muszą się logować na swojej stronie internetowej, aby z niego korzystać? jeśli korzystasz również ze schematu uwierzytelniania hasła, możesz na tym skorzystać. Użyj hasła logowania do swojej witryny jako klucza szyfrowania w symetrycznym szyfrowaniu kluczy, aby zaszyfrować hasło interfejsu API. wtedy musisz tylko przechowywać skrót hasła użytkownika (do twojej strony) i zaszyfrowane hasło dla zdalnego interfejsu API.

+0

To dobry pomysł. –

+0

To brzmi jak naprawdę dobry pomysł. W tej chwili nie używam hasła logowania do mojej witryny, ale jeśli zrobię to później, to zdecydowanie przyjrzę się temu podejściu. – Alinium

Powiązane problemy