2011-11-07 8 views
7

私はDjangoでRead Later List API(http://readitlaterlist.com/api/docs/)とインターフェースしているWebアプリケーションを作成しています。ただし、すべてのAPI呼び出しでは、リクエストごとにユーザー名とパスワードを送信する必要があります。これを行うには、データベースのプレーンテキストにユーザーのパスワードを格納する必要があるようです。私は何かを逃しているのですか、それともこの場合に可能な唯一のアプローチですか?私のデータベースに暗号化されたパスワードを保存する方法はありますか?しかし、APIコールを行うときに暗号化されたバージョンを送ることはできますか?そうでない場合、ユーザーのパスワードを安全に守るために私が従うべきベストプラクティスがありますか?APIコールでパスワードをプレーンテキストで送信する必要がある場合、データベースにパスワードを保存する最も良い方法は何ですか?

私はこれがプレーンテキストのパスワードを送信する唯一のサービスではないと確信しています。私は開発者がこれらのサービスを一般的にどのように扱うかを知ることに興味があります。私はウェブ開発に新しいので、任意のヘルプやポインタが高く評価されています。

+0

私は同様の質問をしました:http://stackoverflow.com/questions/5791083/django-facebook-security-design-for-a-facebook-webapp-that-performs-a-third –

答えて

4

パスワードはプレーンテキストで保存しないでください。パスワードを暗号化して解読することはできますが、暗号化と解読に使用する鍵は一般にサーバーにアクセスして安全なものではないため誰でもアクセスできるという問題があります。

パスワードを入力して暗号化されたCookieやセッション変数などに保存し、アプリからログアウトしたときに期限切れになるようにすることもできます。これには、アプリを使用するたびにパスワードを入力する必要があるという欠点があります。

+0

セッション変数/暗号化されたクッキー有望な音。私はそれらを調べます。ありがとう。 – Alinium

7

ユーザーはウェブサイトにログインして使用する必要がありますか?また、パスワード認証方式を使用している場合は、その上にピギーバックすることもできます。サイトのログインパスワードを、対称キー暗号の暗号キーとして使用して、apiパスワードを暗号化します。ユーザーパスワードのハッシュ(自分のサイトへの)と、リモートAPI用の暗号化されたパスワードを保存するだけで済みます。

+0

これはいいアイデアです –

+0

本当に良いアイデアのように聞こえます。私は現在自分のサイトにログインパスワードを使用していませんが、後で行う場合は、この方法を確かめます。 – Alinium

関連する問題