時々データを送信するためにSQLデータベースに接続する必要があるC#アプリケーションがあります。このジョブに使用されるユーザー名とパスワードを安全に保存するにはどうすればよいですか?
8 に答える
.Netで接続文字列を保護する方法についてのすばらしいMSDNの記事があります。
保護された構成を使用することをお勧めします。
可能な限り、統合Windows認証を使用してください。それはあなたのアプリケーションの責任を取り除き、Windowsにそれを処理させます。SQL認証の代わりにWindows認証を使用することは、ベストプラクティスと見なされます。
この受け入れられた答えを読んでください:asp.netアプリのSQLサーバー(Windows認証とSQL Server認証)を接続するための最良の方法
そして:http ://www.greensql.com/content/sql-server-security-best-practices
ちなみに、これが質問で示されている「ジョブ」である場合は、特定のセキュリティコンテキストで(つまり、特定のWindowsユーザーとして)実行できる単純なWindowsサービスまたはスケジュールされたタスクの候補として最適です。
app.configまたはweb.configで、.net暗号化プロバイダーを使用してそれらを暗号化します
詳細については、こちらを確認して くださいhttp://msdn.microsoft.com/en-us/library/dx0f3cf2%28v=vs.80%29.aspx
保護された構成を使用した構成情報の暗号化
http://msdn.microsoft.com/en-us/library/53tyfkaw%28v=vs.80%29.aspx
正確な要件についてはわかりませんが、何よりもまず、パスワードを暗号化する必要があります。また、このような機密情報を送信する場合は、安全な接続の使用を検討してください。
暗号化されたバージョンを接続文字列に保存し、パスワードを復号化した後、プログラムで接続文字列を形成します。
些細なものから複雑なものまで、任意の暗号化メカニズムを使用できます。
非常に安全な対称暗号化キーであるRijndaelManagedキーを確認することをお勧めします。この情報(およびチュートリアル)に関する優れた記事は、ここにあります。
パスワードに暗号化および暗号化解除アルゴリズムを使用し、ユーザーを作成したユーザーとユーザーが作成した日時ごとにユーザー情報をログに記録して、これをデータベースに保存できます。誰かが更新または編集したとしても、その情報をデータベースに記録します。
stirngをmd5に変換するコード
using System.Text;
using System.Security.Cryptography;
public static string ConvertStringtoMD5(string strword)
{
MD5 md5 = MD5.Create();
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(strword);
byte[] hash = md5.ComputeHash(inputBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
sb.Append(hash[i].ToString("x2"));
}
return sb.ToString();
}