5

この投稿の主題を達成するために調査した方法と、それらの問題についてまとめた (役立つことを願っています) まとめをまとめました。他に気に入った方法があれば教えてください。特に、私が言及した方法では解決できない問題を解決できる場合は、教えてください。

  1. 接続文字列は web.config のままにし、XDT/msdeploy 変換を使用して、アクティブなビルド構成 (web.PublicTest.config ファイルなど) に応じた設定に置き換えます。これに関する私の問題は、いくつかのサーバー固有の設定を、多くの構成要素を含むグローバルに同一のファイルにマージして埋め込むことです。さらに、複数のピア レベルのアプリケーション間で接続文字列の定義を共有することはできません。

  2. web.config で接続文字列に configSource="DeveloperLocalConnectionStrings.config" 値を指定し、XDT でこの値を変換して、コードベース内の複数の環境固有ファイルの 1 つを指すようにします。これに関する私の問題は、すべての環境のパスワードをすべての宛先に (もちろん SVN に加えて) 送信し、サーバー上に未使用の構成セクションが誤って使用されるのを待っていることです。

  3. web.config ではなく、machine.config ファイル内の特定の接続文字列。問題: 一体誰が machine.config で接続文字列を見つけることを期待しているのか、その結果、予期せぬ名前の衝突が発生する可能性が高くなります。

  4. configSource="LocalConnectionStrings.config" を指定し、値を変換せず、プロジェクト xml を編集して接続文字列構成のデプロイを除外します。http://msdn.microsoft.com/en-us/library/ee942158.aspx#can_i_exclude_specific_files_or_folders_from_deployment- これは、プロプライエタリ (非分散型) Web アプリケーションのニーズに対応するために私が見つけた最良のソリューションですが、ある日別のチーム メンバーが来て、なんらかの理由で本番サイトをコピーしてテストするのではないかと疑っています。UAT 中に実稼働データベースが変更されています。(更新: このシナリオではワンクリック パブリッシュを使用できないことがわかりました。-skip パラメーターを指定した msdeploy コマンド ラインのみです。上記のようにファイルを除外することは、" ではなく "なし" コンパイル アクションに設定することと同じです。 Content" となり、パッケージによって展開ターゲットから削除されます。)

  5. まだ設定されていない場合は、接続文字列を要求するように展開パッケージを配線します (これを行う方法はまだわかりませんが、可能であることは理解しています)。これにより、上記の #4 と同様の結果が得られます。

  6. configSource=".​​.\ConnectionStrings.config" を指定します。選択したアプリ間で構成を共有でき、アプリケーション ディレクトリにマシン固有のものは何もないため、私のニーズには最適です。残念ながら、この属性では親パスは許可されていません ('appSettings file=""' の場合のように - configSource= 参照内で file= をうまく使用できることにも注意してください)。

ps これらのソリューションの一部については、ここで説明します: ASP.Net 構成ファイル -> 複数の開発者と展開サーバーの接続文字列

4

3 に答える 3

3

SQL Server を使用する場合、Integrated Security / SSPI を使用して WebServer Computer Login を Sql Server に追加することもできます。

そうすれば、web.config で何も公開する必要がなく、他の DB ユーザーと同じように、そのログインにロールを付与できます。

ただし、そのマシンとして実行された悪意のあるコードは SQL Server にアクセスできるため、その影響とセキュリティに関する考慮事項を理解する必要があります。

オーレに関して

于 2010-10-19T10:33:50.193 に答える
1
  1. ホスト名を接続文字列のキーとして使用すると、データソースを自動的に選択できます。選択ルーチンにバグがないことを確認してください (ホスト名の変更 - テスト!)...

  2. web.config に入れないでください。ini ファイルを作成してください。そうすれば、XML エンコーディングはありません。

  3. 秘密鍵/公開鍵 (RSA/PGP) を使用して、パスワードを暗号化します。クリアテキストや対称鍵を使用しないでください。これも同様に悪いことです。

于 2010-10-15T07:44:31.010 に答える
0

次のブログ投稿を確認してください:asp.netマシンキーと接続文字列の保護

Quandaryの回答を使用する場合は、asp.netが保護された構成セクションで行うのと同じように、サイトのフォルダーにないキーを使用してください。

ステージング/本番環境に移行するweb.configへの変更を手動で承認します。可能な場合はユーザー名ベースの代わりに統合を使用しますが、後者の場合に使用したオプションは、SVNでユーザー名/パスワードのプレースホルダーのみを使用することです。

以前は個別の構成ファイルを使用していましたが、web.configの変更で他の種類の問題が発生したため、最近は1つのファイルにロックしています。

于 2010-10-15T14:18:58.687 に答える