デスクトップクライアントでOpenID認証を簡単にするアプリを作成しようとしています。基本原則は、可能なすべてのOpenIDプロバイダに対してハードコードされた認証を避けるためにWebブラウザからCookieを盗むことです。
ユーザーが OpenID プロバイダにログインしたと仮定すると、アプリケーションはデフォルトのブラウザで Cookie を複製し、適切な OpenID URL 要求を使用して必要なサービスを認証します。
このアプリケーションを使用可能にするには、Linuxで最も一般的に使用されるWebブラウザが何であるかを知る必要があり、おそらく統計的証拠も必要です。今はFirefoxとChromiumが最も人気があるようです。
注:回答者が安全と基準を強調するにつれて、この質問のタイトルは編集されました。
答え1
認証のために「ウェブブラウザからクッキーを盗む」とは、マルウェアが個人情報やログインデータを取得するために行うのとまったく同じです。
このアプローチが有効な場合は、各ブラウザの開発チームにそのソフトウェアのセキュリティの脆弱性を知らせることをお勧めします。
答え2
WebブラウザからCookieを盗むことは、スクレイピングスクリプトを作成し、スクリプトでいくつかの複雑なWebサイト認証を処理したくない場合によく発生します。
伝統的に、ブラウザはNetscapeから継承した単純なテキスト形式でCookieを保存しますcookies.txt
。 Wgetにはオプションがあります--load-cookies
このようなファイルをロードします。
FirefoxとChromeの最新バージョンはこのフォーマットを使用せず、代わりにSQLiteデータベースを使用します。ファイルをダンプできる拡張機能がありますcookies.txt
。クッキー輸出業者そしてcookie.txt エクスポート。
これは、技術的な考えを持つ人々が使用するスクリプトにはすべて優れていますが、一般的な公開アプリケーションでは実行しません。どのブラウザを使用すべきかわからない痛みを伴う状況に直面する可能性があります(このユーザーは3つのFirefoxプロファイルと2つのChromeプロファイルを持っていますが、どちらを見るべきですか?)あまり一般的ではないブラウザ(Opera、Konqueror、Gecko)ユーザーを怒らせます。 、等。)。 )。うまくいっても使いやすさに大きな影響を与えます。ユーザーがアプリを引き続き使用している限り、アプリケーションを使用する前に、ブラウザでアクション(サイトからログアウトまたはCookieを削除する)を実行するように要求する代わりに可能です。
ターゲットWebサイトが対話しにくい場合でも、このアプローチは合理的だと思います。それにもかかわらず、私はあなたのアプリケーションがブラウザオートメーションフレームワークを介して独自のブラウザインスタンス(自己設定ファイルを含む)と対話することを好みます。セレンまたはバティエ。一般的なOpenIDログインの場合は、既知のブラウザを呼び出して認証情報を送信する方が良いと思います。
答え3
これが逆効果を生み出す方法はいくつかあります。
ブラウザからCookieを取得する方法はさまざまですが、公式APIを使用して実行されるわけではありません。これは、現在リリースされているソフトウェアバージョンの実装の詳細に依存し、予告なしにいつでも変更される可能性があることを意味します。ブラウザの内部が再設計されるにつれて、アプリケーションがランダムにクラッシュする可能性があります。変更を事前に知ることができない場合があるため、修正を見つけるのに数日または数週間かかる場合でも、怒っているユーザーは完全に破損したプログラムを探しに行きます。ブラウザのベンダーがセキュリティ上の理由でCookieリポジトリを暗号化することを決定した場合、プログラム全体を変更することはできません。
多くの最新ブラウザにはマルチプロファイルという概念があります。個人アカウントまたは会社アカウントを使用してエッジにログインできます。どのクッキーからクッキーを抽出するのかどうかはどうすればわかりますか?ユーザーがブラウザのプロフィールを切り替えたときにアプリでアカウントを切り替えたいですか?仕事用アカウントと個人用アカウントを混同することは、長い間ユーザーに災害をもたらしました。もし私が考えるアプリで1つのアカウントを使用し、自分のブラウザで別のアカウントを使用しますか?
おそらく最も重要なことは、アプリケーションのユーザーに慣れていない非常に特定の方法でWebブラウザを使用するように強制することです。私(そして他の多くの人)はプライベート/シークレットモード(または同様のプラグイン)を使用しています。クッキーが自動的に削除されました)ログインが必要なすべてのウェブサイトにアクセスしてください。これにより、ブラウザを閉じた後でもCookieやその他のログイン情報が保持されなくなります。あなたのアプリケーションは必要ユーザーは、認証情報を安全でない方法で保存する方法でブラウザを使用します。安全を重視する人はこれが不可能だと思います。