2017-02-10 6 views
0

私は1つ以上のサードパーティのウェブサイトからのデータに依存するウェブアプリを開発しています。ウェブサイトは認証APIを提供していないため、非公式のAPIを使用して第三者のサイトからデータを取得しています。認証APIが存在しない場合に、ユーザーの資格情報を第三者のWebサイトに安全に保存する方法

私は、ユーザーに第三者のウェブサイトへの資格情報を求める予定です。私はこれがユーザーに私と私のツールを信頼することを要求していると理解しています。信任状を可能な限り安全に保管し、信任状を共有するリスクを明確にすることで信頼を尊重します。

今日、この問題に対処する一般的なツールがあることは知っています。たとえば、Mint.comは定期的に取引情報を取得できるように、金融口座へのユーザーの資格情報を要求します。 LinkedInは、ユーザーの電子メールの資格情報を問い合わせて、連絡先を収集できるようにします。

ユーザーの資格情報を格納するための安全な設計は何ですか?特に、私はDjangoアプリケーションを作成しており、PostgreSQLバックエンドの上に構築される可能性が高いですが、私は他のアイデアを公開しています。

これらのサードパーティのサイトからアクセスされるデータは、財務勘定、電子メールアカウント、ソーシャルネットワーキングプロファイル/アカウントのレベルには至っていません。それは、私は最大の敬意でこのアクセスを扱うつもりであると言いました。そのため、私はまずここで援助を求めています。

答えて

1

パスワード/秘密の保管に関しては、安全な設計というものはありません。どのくらいのセキュリティオーバーヘッドのトレードオフがあなたと一緒に暮らしているかだけです。ここで私はあなたが何をすべき最低限を検討するものです。

  1. HTTPSのみ(すべてのパスワードが輸送中に暗号化されなければならない)
  2. 可能な場合はあなたがする必要がある場合を除き、彼らと一緒に作業するときにメモリに暗号化されたパスワードを保ちますそれらにアクセスしてサービスにアクセスします。
  3. データストア内の暗号化。すべてのパスワードは、データストアで強く暗号化する必要があります。
  4. [オプションですが強くお勧めします]顧客のキー入力。顧客はデータのロックを解除するための鍵を保持する必要があります。これは、サードパーティのサービスとの通信が、お客様がアプリケーションとやり取りしている場合にのみ行われることを意味します。設定した時間が経過すると、キーの有効期限が切れます。これにより、不正なDBAやDBが侵害されるのを防ぐことができます。
  5. これは厳しい監査です。お客様の情報のすべてのアクセスがログに記録され、顧客はログを表示してアクティビティーを確認または確認できる必要があります。 DBレベルでこのロギングを有効にするものもあります。そのため、DBレベルのすべての行アクセスがログに記録されます。加えて
+0

顧客キーイングの仕組みの流れを考え、資格情報が使用されるたびにキーを入力する必要がある場合、資格情報を保管することに何らかの利点がありますか?つまり、暗号化されたパスワードを保管し、使用する必要があるときに顧客がロックを解除できるようにするのではなく、毎回顧客にパスワードを要求するのはなぜですか? – Joseph

+0

質問がパスワードとパスワードである場合は違います。パスワードが1つだけの場合、問題はありません。複数のアカウントと複数のパスワードを使用する場合は、使用するために複数の資格情報をロック解除するパスワードを1つ覚えておくだけでよいでしょう。 – 2ps

+0

ああ、それは良い点です。ありがとうございました! – Joseph

1

2psは言った:

ジャンゴを使用してPostgresデータベースに暗号化されたデータを格納するハンドルdjango-cryptographic-fieldsと呼ばれるプロジェクトがあります。

上記のリンクから自分のREADMEに記載されているように:

ジャンゴ - 暗号化フィールドは、Pythonの暗号ライブラリが提供する暗号化と標準Djangoのフィールドをラップするフィールドで設定されています。これらのフィールドは、keyczarが使用するディスク上のファイルではなく、設定ファイルから暗号化キーを取得するため、12因子設計と互換性があります。

keyczarは、暗号化に使用するための優れたツールですが、あなたは 展開のために、あなたのgitリポジトリにあなたのキーファイルを確認するか、のいずれかを実装する こと、Herokuのようなホストのために、それは、Python 3との互換性が ではありません、それが必要です 環境変数に格納されているキーをkeyczarで読み取ることができる というファイルを手動で配布する処理。

関連する問題