Token Authenticatable モジュールで Devise を使用しています。データベースに保存されているデータを見ると、パスワードは暗号化されていますが、アクセス トークンは暗号化されていません。
ハッカーがデータベース情報を入手した場合、ハッシュ化されていないパスワードを保存するのと同じように、完全に機能する未加工のアクセス トークンを取得できるため、これはセキュリティ上の大きな懸念事項ではないでしょうか?
Token Authenticatable モジュールで Devise を使用しています。データベースに保存されているデータを見ると、パスワードは暗号化されていますが、アクセス トークンは暗号化されていません。
ハッカーがデータベース情報を入手した場合、ハッシュ化されていないパスワードを保存するのと同じように、完全に機能する未加工のアクセス トークンを取得できるため、これはセキュリティ上の大きな懸念事項ではないでしょうか?
セキュリティと利便性は通常、相反するものです。安全性は低くなりますが、これを軽減する方法があります(もちろん利便性は低下します)。トークンを頻繁に失効させることができます (expire_auth_token_on_timeout
すべてのトークンを使用するか、定期的にリセットします。
DB が危険にさらされると、より大きな問題が発生します。通常、パスワードはユーザーによってサービス間で共有されるため、漏洩したパスワードは、漏洩した auth_token よりもはるかに悪いものです。
暗号化されていないのはなぜですか?
パスワードはユーザーの心に保存され、auth_token が生成されます。送信して暗号化された auth_token と比較するには、どこかに (クライアント側) に保存する必要があります。ユーザーが「通常の」資格情報でサインインするたびに、新しいトークンを生成する必要があります。
パフォーマンスも問題になる可能性があります。BCrypt は遅く、リクエストごとにこの比較を行うと問題が発生する可能性があります。
ドキュメントまたは開発者のいずれかによる「公式」の回答が見つからなかったため、提供された回答は私の経験と意見に基づいています。