C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

データベースの接続情報を保存するには

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■98120 / inTopicNo.1)  データベースの接続情報を保存するには
  
□投稿者/ 北 (1回)-(2021/09/21(Tue) 23:37:23)

分類:[.NET 全般] 

C#を勉強中なのですが、C#からデータベースに接続してSELECT文を発行する方法は色々なサイトで見るので理解しています。

実際のプロの現場ではデータベースの接続情報はどこに格納しておくのが正しいのでしょうか?直接コードに埋め込むのは違うような気がしたので調べた結果、
リソースファイル、設定ファイル、またはApp.configに記述すると良さそうなのがわかってきました。

どの方法もXMLに情報を書き込むような感じに思えますが、その場合第三者にパスワード等が見られる可能性があるのではないか?と思いました。
実際、接続情報を保存するにはどういった方法がよいのでしょうか?
引用返信 編集キー/
■98122 / inTopicNo.2)  Re[1]: データベースの接続情報を保存するには
□投稿者/ WebSurfer (2350回)-(2021/09/22(Wed) 09:31:18)
No98120 (北 さん) に返信

> その場合第三者にパスワード等が見られる可能性があるのではないか?と思いました。
> 実際、接続情報を保存するにはどういった方法がよいのでしょうか?

クライアント PC から直接 DB に接続できるというリスク満載のような構成を見直
してはいかがですか。

例えば、

クライアント PC ⇔ Web API ⇔ DB サーバー

というようにすれば、「第三者にパスワード等が見られる可能性」などのリスクは
排除できます。


#リスクはあっても、どうしてもクライアント PC ⇔ DB サーバーという構成にした
 いということであれば、接続文字列の暗号化などの手段が使えるかもしれません。
 ググってご自分で調べてみてください。
引用返信 編集キー/
■98170 / inTopicNo.3)  Re[2]: データベースの接続情報を保存するには
□投稿者/ PATIO (12回)-(2021/10/06(Wed) 16:13:22)
2021/10/06(Wed) 16:18:12 編集(投稿者)

No98122 (WebSurfer さん) に返信
> ■No98120 (北 さん) に返信
>
>>その場合第三者にパスワード等が見られる可能性があるのではないか?と思いました。
>>実際、接続情報を保存するにはどういった方法がよいのでしょうか?
>
> クライアント PC から直接 DB に接続できるというリスク満載のような構成を見直
> してはいかがですか。
>
> 例えば、
>
> クライアント PC ⇔ Web API ⇔ DB サーバー
>
> というようにすれば、「第三者にパスワード等が見られる可能性」などのリスクは
> 排除できます。
>
>
> #リスクはあっても、どうしてもクライアント PC ⇔ DB サーバーという構成にした
>  いということであれば、接続文字列の暗号化などの手段が使えるかもしれません。
>  ググってご自分で調べてみてください。

勉強中と言う事なのでおそらくそこまでの構成を作ってまでやるという話ではなくて
単純にどうするのが正解なのだろうという話になるかなと思います。
で、どこまで頑張るかという話なるかと思います。

メンテナンス性を考えると設定ファイルに外出しが一般的ですが、
平文で書き込んでしまうとパスワード情報等が簡単に参照できてしまいます。
WebSurferさんが書かれているように設定ファイル上は暗号化した文字列情報を保持しておいて
プログラム内で利用する時に復号化して使用するというのが最初にたどり着くところかなと思います。

あと、WebSurferさんの案のように途中にデータアクセスを代行してくれる物を仲介すると
データベースのパスワードは直接外には出てきませんが、Web APIをノーガードで動くように
した場合は誰でもWeb APIの範疇ではアクセスできてしまう事になります。
(Web APIが参照だけで見られても構わないという場合は問題ありませんけれど。)
データのやり取りが必要な以上は何らかの情報のやり取りは避けられないので
完ぺきという方法はありません。
接続文字列の暗号化をしていたとしても時間をかけて復号化されれば、同じことになります。
やりにくくする事で不正アクセスをやろうという人をあきらめさせるのが目的になるので
その方法にかかる労力とそれによって得られる抑止効果の両天秤と言う事になると思います。




引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ