多くのAPIは、ユーザーとパスワードの組み合わせを介してデータへのリモートアクセスを提供します。
毎回尋ねることなく直接接続するために、これらの価値を保存するための最良の方法、安全性の高い方法(100%が不可能な場合でも)はどれであるか疑問に思いました。
多くのAPIは、ユーザーとパスワードの組み合わせを介してデータへのリモートアクセスを提供します。
毎回尋ねることなく直接接続するために、これらの価値を保存するための最良の方法、安全性の高い方法(100%が不可能な場合でも)はどれであるか疑問に思いました。
次の3つのアプローチのいずれかをお勧めします。
認証トークンを使用してパスワードを保存することは絶対に避けてください。このモデルでは、ユーザーは1回ログインすると、サーバーは、クライアントが保存してログインの「パスワード」として使用できる、一意の大きなスパーストークンを生成します。サーバーは一度に1つのクライアントからのみこのトークンを受け入れるため、2つのクライアントが同時に使用しようとすると、トークンは無効になります。また、トークンは通常、一定期間(1週間、2週間、1年、適切なものは何でも)後に無効になります。トークンが無効になると、ユーザーは手動で再度ログインする必要があり、プロセスが繰り返されます。これは基本的にGmailや同様のWebサイトログインのアプローチです。
パスワードを保存する必要がある場合は、OSに依存してパスワードを管理することをお勧めします。WindowsとMacはどちらも、安全なストレージシステム(それぞれDPAPIとキーチェーン)を備えています。ただし、Linuxには常に利用できる優れたソリューションがないため、市場によって異なります。OSを使用する利点は、OSが自分では簡単に提供できない保護を提供できることと、ユーザーがOSストレージの全体的な保護(スマートカードなどを使用)を再現しにくいレベルまで一元管理できることです。OSセキュアストアは、通常、ユーザーにとって非常に便利です。
これらのいずれもオプションでない場合は、ユーザーがアプリを起動するたびに入力する必要があるマスターパスワードを使用して暗号化されたファイルを保存します。これがFirefoxの動作です(または、少なくとも前回見たときは動作していましたが、しばらく経ちました)。これはかなり安全ですが、ユーザーにとってははるかに便利ではありません(そして、利便性が低いということは、多くの場合、ユーザーによる採用が少ないこと、またはより単純なパスワードなどによる使用が不十分であることを意味します)。これを実装する方法の例として、Firefoxコードを調査します。
最善の方法は、他の誰かにそれらを保存し、代わりにそのパーティを信頼することです。しかし、あなたがコントロールを持っている必要があるなら、私は安全なシステムに関する良い本を読んで、それからもう一度考えることを提案します。考慮すべき多くの変数があり、ほとんどの場合、リスクとコストを軽減するだけです。