2016-09-08 1 views
3

SqlConnection()とConnection文字列を使用して安全にデータベースに接続していますか?私は、データベースへの接続にDapperのORMと一緒に次のコードを使用してい

using (IDbConnection db = new SqlConnection(ConnectionString())) 
{ 
return db.Query<object>(Sql).ToList(); 
} 

接続文字列は、データベース名とログイン情報が含まれています。私は、データベースサーバーへの接続を確立している間に、その情報のいずれかが他の誰かに見えてしまうのではないかと疑問に思っています。

答えて

0

これは、接続が確立されている場所と接続が確立されている場所によって異なります。

たとえば、分散クライアントのいずれかのエンドが誰かの手にある場合、その接続の詳細を保持できます。しかし、典型的には、Webサーバからデータベースへの接続のような「背景の下で」接続が確立されます。このように確立された接続はすべて「サーバー側」なので、接続文字列はアプリケーションの「クライアント」には見えないため、一般的には安全だと認識されています。 :)

これは、ドメインで実行されている厚いクライアントのようなものであれば、Windows資格情報のようなものを使用することはオプションであり、アカウントと同じくらい安全です。

+0

ありがとうございましたこれは有益でした。 –

1

あなたは輸送中に意味場合:あなたは、暗号化された接続を使用するようにSQL Serverを強制することができます - あなたはインプロセスを意味する場合https://technet.microsoft.com/en-us/library/ms189067(v=sql.105).aspx

を - 彼らは他のコードに自明使用することはできませんので、重要な部分は、デフォルトでは削除されますSqlConnectionインスタンスを使用します。これは、SqlConnectionのconnection-stringの "Persist Security Info"パラメータに関連しています。デフォルトはfalseです。基本的に、.ConnectionStringプロパティは提供された資格情報を公開しません。 stringはある時点でまだメモリに存在していたので、プロセスとメモリ解析ツールへの未加工のアクセス権を持っている人はまだそれを得ることができます。 https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring(v=vs.110).aspx

しかし、SSPI経由でWindows認証を使用することもできます。これは、app-domainの実行中のユーザーID情報を使用して接続するだけです。上記と同じリンクですが、「統合セキュリティ」の接続文字列パラメータを参照してください。はい、ネットワークDB接続を介して情報

へのアクセスを取得することが可能であろう:ローカル・コンピュータでの

+0

これは参考になりました。 –

0

はDBに依存し、SQL ServerがSSLをサポートしていますが、あなたは、あなたがそれを使用しない場合あなたのトラフィックの情報を公開しています

+0

これは有益でした。 –

関連する問題