2016-04-25 22 views
0

私は、SSL上でSOAP Webサービスを呼び出すライブラリにクラスを作成しています。 SOAPサービスでは、各呼び出しでユーザー名とパスワードを渡す必要があります。このライブラリは、公開されているWebサイトのサーバーコードによって参照されます。私はパスワードを保存するための標準的な/最良の方法は何か分かりません。呼び出しごとにユーザー名とパスワードが必要なSOAPサービスを呼び出します。パスワードはどのように保存するのですか?

私が見るオプション...クラス

  • ストアデータベース
  • ストアのconfigファイル内のパスワードにパスワードの文字列として

    • 打ちパスワード

    これらのどれも安全で簡単に更新可能であると私に警告します。

  • 答えて

    1

    私はセキュリティ専門家ではありません。年齢を重ねても.NET開発を行っていないため(情報が古くなっている可能性があります)、ここにいくつかアイデアやアドバイスがあります。打ちクラス

    の文字列としてパスワードがそれをしないでください

    。あなたのソースコードはバージョンコントロール(TFS、Git、何でも)にありますので、開発者はコードをチェックインしてから永遠に見ることができます。ユーザー名/パスワードへのアクセスを保護するために、ソースリポジトリへのアクセスを保護することが強制されています。私はすべての開発者がソースコードにアクセスする必要があると思うが、ユーザー名とパスワードを知る必要はない。プロフィールに

    ストアデータベースにパスワードをベースに、私はあなたがSQLサーバーを使用すると仮定しますか? See what encryption options are available to SQL serverに移動します。たぶんそのうちの1つがあなたのユースケースで十分でしょう。

    ストアのconfigファイルにパスワード

    これもおそらくソース管理になってしまいますが、あなたは(私はC#はに基づいてファイルencrypt parts of the configを仮定していることができるので、それは最初のオプションほど悪くはありませんあなたのプロフィール)。

    SOAPサービスを制御できれば、必要なユーザー名/パスワードから相互認証を使用するように変更できます。クライアントに証明書をインストールし(キーのエクスポートを拒否する)、証明書がインストールされているクライアントからのみWebサービスの呼び出しを許可します(これは開発者のマシンにもインストールできます)。

    解決方法は、このユーザー名/パスワード、つまり必要なセキュリティのレベル(質問に指定していない)をどれだけ保護することが重要かによって異なります。

    極端に重要でない場合は、データベースからポイント2)または外部ファイル(ソース管理でコミットされていない)に持っていて、そのファイルをサーバーまたはdevマシンに置くことができます。基本的には、マシンへのアクセスを制御します(すべての開発者がキーボードからキーボードを起動するとPCをロックしていることを前提とします)。

    これを守ることが本当に重要であれば、https://security.stackexchange.com/に私があなたに与えるよりも良いアドバイスを求めるかもしれません:)。

    関連する問題