[解決済み] web.config内に保存されたパスワードを保護するにはどうすればよいですか?
質問
外部システムへのAPIコールを開始するために、web.configファイル内に以下の設定を追加しました。そのため、API URL + ユーザー名 + パスワードを以下のように保存しています。
<appSettings>
<add key="ApiURL" value="https://...../servlets/AssetServlet" />
<add key="ApiUserName" value="tmsservice" />
<add key="ApiPassword" value="test2test2" />
そして、アクションメソッド内で、以下のようにWebクライアントを構築する際にこれらの値を参照することになります。
public ActionResult Create(RackJoin rj, FormCollection formValues)
{
XmlDocument doc = new XmlDocument();
using (var client = new WebClient())
{
var query = HttpUtility.ParseQueryString(string.Empty);
foreach (string key in formValues)
{
query[key] = this.Request.Form[key];
}
query["username"] = System.Web.Configuration.WebConfigurationManager.AppSettings["ApiUserName"];
query["password"] = System.Web.Configuration.WebConfigurationManager.AppSettings["ApiPassword"];
string apiurl = System.Web.Configuration.WebConfigurationManager.AppSettings["ApiURL"];
しかし、私はユーザー名とパスワードを公開し、これらはユーザーがキャプチャすることができますので、私の質問は、どのように私は、APIのユーザー名とパスワードを確保することができますか?
解決方法は?
一般的に、web.configは安全なファイルであり、IISはそれを提供しないため、Webサーバーにリクエストを行うユーザーに公開されることはないでしょう。Webサーバーは特定のタイプのファイルのみを提供し、web.configは確かにそのうちの一つではありません。
多くの場合、データベース接続文字列を保存し、その中にはパスワードも含まれています。さて、web.configが安全でなかった場合のシナリオを想像してみてください。あなたのアプリケーションに大きなセキュリティ上の脅威を作り出しているのです。
ですから、プロジェクトの規模が大きくない限りは、特に心配する必要はないでしょう。
しかし、より良い方法は、"Resources"というプロジェクトを作成し、設定、const、enumなどの重要な情報をすべてそこに保存しておくことです。そうすれば、スマートで整理されたアプローチになるでしょう。
もし、ユーザー名やパスワードを無線でやり取りする場合(例えば、安全な API 呼び出しの場合)、https を使用して、やり取りする情報が暗号化されていることを確認したいかもしれませんが、それは web.config ファイルのセキュリティとは何の関係もありません。
関連
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] ランダムな英数字の文字列を生成するにはどうすればよいですか?
-
[解決済み] .NETコンソールアプリケーションでアプリケーションのパスを取得するにはどうすればよいですか?
-
[解決済み] web.configでmaxJsonLengthの長さを無制限に設定することは可能ですか?
-
[解決済み】ASP.NET MVCでWebアプリのベースURLを取得するにはどうすればよいですか?
-
[解決済み】Web.configの変換でappSettingsセクションの属性値を変更する方法
-
[解決済み】web.config ファイルを使用して HTTPS を強制的に実行する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み】「...は'型'であり、与えられたコンテキストでは有効ではありません」を解決するにはどうすればよいですか?(C#)
-
VSでscanfエラーを恒久的に解決するには、ソースファイルを作成し、自動的に#define _CRT_SECURE_NO_WARNINGS 1を追加してください。
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
-
[解決済み】Gitの履歴からファイルを削除する方法は?