3

ユーザーが別のサードパーティ サイト (サードパーティ サイト) で実行できる特定のアクションを自動化するサービス (サービス) を開発しています。

私のサービスは、ユーザーに次の機能を提供します。

  • ユーザーが本サービスに登録する

    1. ユーザーはサードパーティサイトのユーザー名/パスワードをサービスに提供します
    2. サービスはその資格情報を使用して、ユーザーに代わってサードパーティのサイトにログインします
    3. サービスは、サードパーティのサイトによって発行された Cookie をそのデータベースに保存します
    4. これ以降、サービスは、以前に保存された Cookie (サード パーティ サイトのユーザー名/パスワードはどこにも保存されません) を使用して、ユーザーに代わってサード パーティ サイトへの定期的なログイン (cron) を開始し、サードパーティのサイトでユーザーに代わって

ユースケース図

ノート:

  • サービスに登録する前に、ユーザーには、サービスとサード パーティ サイト間の相互作用を説明する完全な情報が提示されます。
  • ユーザーのサード パーティ サイトへのログインを自動化することには一定の価値があり、ユーザーはサード パーティ サイトでのログインと特定のアクションの自動化に関心があります。
  • サードパーティのサイトには OAuth 機能はありません
  • サードパーティのサイトにはユーザー認証トークン機能はありません

ここ Stack Exchange で調査を行いましたが、解決策が見つかりませんでした。

さらに、提供された質問と回答を読むと、ユーザーのログイン データ (パスワードまたはサード パーティ サイトの Cookie) を保護する方法がないと思う傾向があります。つまり、攻撃者がサービスのサーバーへのアクセスを取得した場合、攻撃者はサードパーティ サイトのユーザー アカウントへのアクセスも取得します。

サード パーティのサイトの Cookie を暗号化してサービスのデータベースに保存しようとすると、それらを復号化するスクリプトだけが役に立ちます。したがって、攻撃者がサード パーティ サイトのユーザー アカウントにアクセスするには、サービスのマシンへのアクセスを取得するだけでなく、スクリプトを変更する必要があります (ステップ 4)。

サービスにサード パーティ サイトの Cookie を保存することは、OAuth と非常に似ていますが、この場合、トークンの代わりに Cookie が使用されます (パスワードは保存されません)。

ユーザーのログイン データをサービスに安全に保存し、サービスがユーザーに代わってサード パーティのサイトに定期的にログインできるようにするためのセキュリティ モデル/アーキテクチャを設計する方法は何ですか?

PS私はDjangoを使用していますが、セキュリティモデル/アーキテクチャは特定の技術スタックに依存していないと思います.

4

2 に答える 2