たとえば、AngularJSを使用してWebアプリを作成していて、クレジットカード番号などのユーザーの機密情報が保存されています。
使用すべきセキュリティプロトコルのいくつかを考えています。私はセキュリティの経験がないので、この種の問題では無力だと感じています。要件のいくつかを整理しました。
- クライアント側は決して保護されないため、サーバーはユーザーIDに対して独自の検証を行う必要があります。
- サーバーはパスワードをプレーンテキストとしてデータベースに保存できません。代わりに、不可逆的に変更された文字列を保存します。
- インターネットを介したパスワードの送信は安全ではないため、サーバーは元のパスワードを要求できません。
要件が矛盾しているように見えるので、これまで私は混乱しています。ユーザーパスワードに対して元に戻せない変換を実行する必要がありますが、サーバーが元のパスワードを要求できません。つまり、変換はクライアント側でのみ実行できます。一方、クライアント側はすべてユーザーに公開されており、ハッキングされやすいため、クライアント側を信頼することはできません。
私が言及した問題に対処する既存のセキュリティプロトコル/フレームワークはありますか?