ユーザーが別のサードパーティ サイト (サードパーティ サイト) で実行できる特定のアクションを自動化するサービス (サービス) を開発しています。
私のサービスは、ユーザーに次の機能を提供します。
ユーザーが本サービスに登録する
- ユーザーはサードパーティサイトのユーザー名/パスワードをサービスに提供します
- サービスはその資格情報を使用して、ユーザーに代わってサードパーティのサイトにログインします
- サービスは、サードパーティのサイトによって発行された Cookie をそのデータベースに保存します
- これ以降、サービスは、以前に保存された Cookie (サード パーティ サイトのユーザー名/パスワードはどこにも保存されません) を使用して、ユーザーに代わってサード パーティ サイトへの定期的なログイン (cron) を開始し、サードパーティのサイトでユーザーに代わって
ノート:
- サービスに登録する前に、ユーザーには、サービスとサード パーティ サイト間の相互作用を説明する完全な情報が提示されます。
- ユーザーのサード パーティ サイトへのログインを自動化することには一定の価値があり、ユーザーはサード パーティ サイトでのログインと特定のアクションの自動化に関心があります。
- サードパーティのサイトには OAuth 機能はありません
- サードパーティのサイトにはユーザー認証トークン機能はありません
ここ Stack Exchange で調査を行いましたが、解決策が見つかりませんでした。
- https://security.stackexchange.com/questions/1335/storing-third-party-auth-info-securely
- API で使用するためにサードパーティ アプリケーションのパスワードをアプリに保存するにはどうすればよいですか?
- サードパーティの Web サイトへのログインに使用するパスワードを安全に保管する方法
- サードパーティの資格情報を保存するRails..ベストプラクティスを知っている人はいますか?
- http://12factor.net/config
- https://security.stackexchange.com/questions/31535/need-to-ephemerally-store-third-party-password
- データベースにサードパーティの資格情報を保存する必要があります。最良の方法?
- djangoでサードパーティサービスのパスワードを安全に保存する方法は?
- API呼び出しでパスワードをプレーンテキストで送信する必要がある場合、パスワードをデータベースに保存する最良の方法は何ですか?
- django & facebook: ユーザーに代わってサードパーティのログインを実行する facebook webapp のセキュリティと設計
さらに、提供された質問と回答を読むと、ユーザーのログイン データ (パスワードまたはサード パーティ サイトの Cookie) を保護する方法がないと思う傾向があります。つまり、攻撃者がサービスのサーバーへのアクセスを取得した場合、攻撃者はサードパーティ サイトのユーザー アカウントへのアクセスも取得します。
サード パーティのサイトの Cookie を暗号化してサービスのデータベースに保存しようとすると、それらを復号化するスクリプトだけが役に立ちます。したがって、攻撃者がサード パーティ サイトのユーザー アカウントにアクセスするには、サービスのマシンへのアクセスを取得するだけでなく、スクリプトを変更する必要があります (ステップ 4)。
サービスにサード パーティ サイトの Cookie を保存することは、OAuth と非常に似ていますが、この場合、トークンの代わりに Cookie が使用されます (パスワードは保存されません)。
ユーザーのログイン データをサービスに安全に保存し、サービスがユーザーに代わってサード パーティのサイトに定期的にログインできるようにするためのセキュリティ モデル/アーキテクチャを設計する方法は何ですか?
PS私はDjangoを使用していますが、セキュリティモデル/アーキテクチャは特定の技術スタックに依存していないと思います.