平文のパスワードを Web.config に保存すること自体がセキュリティ上の脆弱性であるとは言いません。しかし、パスワードを暗号化することは有用な多層防御手段であり、隠蔽によるセキュリティだけではありません。
- Web.config を提供するように IIS が正しく構成されていない場合はどうなりますか?
- 誰でも Web.config をダウンロードできるセキュリティの脆弱性 (パディング oracleの脆弱性など) が ASP.NET で発見された場合はどうなりますか?
- Web サーバーへのアクセスには、完全な管理者権限からサーバー側のコード インジェクションまで、さまざまなレベルがあります。攻撃者が後者しか実行できない場合、特にアプリケーションが部分信頼で実行されている場合、攻撃者は Web.config を読み取れる可能性がありますが、マシン キーにアクセスできない可能性があります。
最終的には、プレーンテキストのパスワードを Web.config に保存するリスクを許容できるかどうかを判断するのはユーザー次第です。もちろん、Windows 認証がオプションである場合は、SQL 認証の代わりにそれを使用することを検討することをお勧めします。
更新:セキュリティについて話すときは、資産と脅威を特定することをお勧めします。この場合、資産はデータベース内の機密データであり (データが重要でない場合、わざわざパスワードで保護する必要はありません)、攻撃者が Web.config にアクセスしてデータベースにアクセスする可能性があるという脅威があります。同じように。考えられる軽減策は、Web.config でデータベース パスワードを暗号化することです。
それはどのくらいのリスクですか?このような天文学的にまれな出来事に対して、私たちは本当に計画を立てる必要があるのでしょうか?
この軽減策は、ASP.NET パディング oracle の脆弱性が発見されたときに、すでにその価値を証明しています。プレーンテキストのパスワードを Web.config に保存した人は誰でも危険にさらされました。パスワードを暗号化した人は誰でもそうではありませんでした。ASP.NET の別の同様の脆弱性が今後数年間発見されないという確信はありますか?
ソースコードも暗号化し、実行時に復号化する必要がありますか? 私には過剰に思えます。
では、攻撃者がソース コードにアクセスできたらどうなるでしょうか? 保護している資産は何ですか?また、懸念している脅威は何ですか? 多くの場合、ソース コードはデータよりもはるかに価値が低いと思います。(ここでは、誰でも入手できる市販のオープン ソース ソフトウェアについて考えています。) また、ソース コードに価値がある場合は、難読化を検討する必要があるかもしれません。
彼らがすでにあなたのボックスへのアクセスを制限しているとしたら、ホストに障害が発生しているか、脆弱なサービスがすでにインストールされていると思います.
ASP.NET またはコードのセキュリティの脆弱性はどうですか? 彼らは時々ポップアップします。
私の懸念は標準的な慣行です。それは標準ですか?
Microsoftは、接続文字列を暗号化することを推奨しています。
あなたがすべきことは、プレーンテキストのパスワードを保存することによるリスクを評価することです:
- 攻撃者が Web.config を公開するセキュリティの脆弱性を発見して悪用できる可能性はどのくらいありますか? 過去の歴史に基づいて、その可能性は低いと思います (ただし、「天文学的に」低いわけではありません)。
- データの価値や機密性は? 保存しているのが猫の写真だけである場合、攻撃者がデータベースのパスワードを取得するかどうかはあまり重要ではありません。ただし、個人を特定できる情報を保存している場合は、法的な観点から、接続文字列の暗号化など、アプリケーションを保護するためにあらゆる手段を講じる必要があります。