トップ回答者
テーブルのフィールドのパスワード表記

質問
回答
すべての返信
-
Accessみたいに簡単に出来るかと言えば、私の知っている限りでは出来ないような気がします。
Accessよりもさらにセキュリティを強化した方法はあります。
暗号化機能です。
● 出来ること
権限(証明書)が無いユーザが、Select 文 、Management Studio でデータを参照しても、
画面にデータが表示されない。
ただ、この機能はEdition によっては使用出来ません。
下記のURLを参照して見てください。
SQL Server 2005 自習書シリーズ 管理編 No.10 (SQL Server 2005 の暗号化機能)
苦肉の策としては、パスワードのみ別テーブルにしてアクセス権限を厳しくするとかでしょうか。
-
米田です。
SQL Serverでは、入出力は、他人任せ(アクセス他の各アプリしだい)なので、意味がありません。
このため、通常パスワードをフィールドに保存するのは悪い手法扱いになります。
型としては、サンプルが提供されているのですが、パスワード+Saltをハッシュしたものを保存することで、安全を保とうと努めます。
但し、2007年現在では、サンプルのままだと、不足で、
・SHA1より強力なアルゴリズム
・パスワードとSaltを分離しておく(せめて別テーブルに等)
が要求されることがあります。
SQL Server 2005のAdventureWorksについては、次の通り
http://msdn2.microsoft.com/ja-jp/library/ms124714(SQL.90).aspx
Contact テーブル (AdventureWorks)
>PasswordHash varchar(40) NOT NULL 電子メール アカウントのパスワード。
>PasswordSalt varchar(10) NOT NULL パスワードがハッシュ処理される前にパスワード文字列に連結されるランダムな値。プログラムや解説は、SQL Server 2000のものですが、以下の記事とその周辺が参考になると思います。
http://www.microsoft.com/japan/msdn/security/guidance/secmod17.mspx
SQL Server 2000 でフォーム認証を使用する方法
http://www.microsoft.com/japan/msdn/net/security/SecNetHT03.aspx
セキュリティ保護された ASP.NET アプリケーションの構築 : SQL Server 2000 でフォーム認証を使用する方法
-
ご返信ありがとうございます。
なるほど。パスワードをフィールドに保存するのは、確かに悪い手法ですね。
Accessでも***表記になっても、その表記を解除すれば、パスワードがむき出しですね。
ハッシュ化したもので保存ですね。
サンプルを見て一通り勉強してみます。
今はパスワード自体を、DBに保存する事自体が問題と思ってきました。
暗号化等手法は色々とありますが、選定してみます。
因みに遅くなりましたが、VisualBasic2005で開発しております。
そのVisualBasic2005にも、プログラム内部で保存しておける、リソース変数があるので、
利用できるか検討してみます。
URLまで頂きありがとうございました!