まず、ハッカーがパスワードテーブル全体を取得して盗む方法がわかりません。ウェブサイトの所有者が責任を負うべきかどうかはわかりませんが、DBへのログインが関係するのかどうか疑問に思っています。
ハッカーがアプリケーションまたは管理者ユーザーを使用してDBにログインすることでパスワードを盗むと仮定すると、気密性のある特権を使用してパスワードを独自のスキーマに配置するのはどうでしょうか。
PASS.Passwordsは、ユーザーテーブルへのハッシュされたパスワードとUserIdプライマリ/外部キーを持っています。
DBユーザーがスキーマを渡すために必要な唯一の権限は、プロシージャの実行です。 DB管理者でさえprivを読んでいなかったでしょう。
Authenticate by executing IsAuthenticated(@UserId, @HashedPassword) returns bit.
Create password by executing Create(@UserId, @HashedPassword) returns bit.
Update password by executing Update(@UserId, @OldHashedPassword, @NewHashedPassword) returns bit.
そして、それはあなたが得るすべてです。ハッシュ化されたパスワードでさえ実際に読み取る権限を持つユーザーがいない場合、ハッカーは環境を危険にさらしたとしてもテーブルを盗むことができますか?
大きなパスワードダンプの大部分はsqlインジェクションで行われます。 1人の開発者がSQLインジェクションの脆弱性を導入する可能性があるという事実を計画しているため、認証データベースをプログラムの残りの部分から分離することは多層防御戦略です。 SQLデータベースの大部分はクエリのスタックを許可しておらず、SQLインジェクションを使用して任意のリモートコード実行を取得することは困難です。 SQLインジェクション(sqlmap rocks)を使用して管理者パスワードまたはその他の認証資格情報をダンプすることは、実際には非常に一般的な攻撃パターンです。
OAuthはさらに優れたアプローチです。 GoogleとFacebookは人気がありますOAuthプロバイダー。ユーザーが増えるだけでなく、セキュリティに専念するためのリソースも増えます。セキュリティの脅威が完全に回避された場合、システムは最も安全です。