組織内のいくつかの異なるサイトにリソース(js / css)を提供するためのリソースマネージャーハンドラーを作成しました。ほとんどのサイトは内部にありますが、いくつかは外部にあり、SSLを使用しています。QA / Devサイトには証明書と同じドメイン名がないため、カスタム検証にコールバックを使用する必要があります。私は、環境をチェックして本番環境にない場合にのみtrueを返すか、ドメイン名をチェックしてqa/devドメインと一致する場合にtrueを返すなどの操作を実行できることを理解しています。私の質問はそれをどのように行うかではありませんが、なぜですか?リソースハンドラーのすべての証明書を受け入れることが安全でないのはなぜですか?ユーザーが実際に行うことができる悪意のあることは何ですか?
ServicePointManager.ServerCertificateValidationCallback += ValidateRemoteCertificate;
public static bool ValidateRemoteCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors policyErrors)
{
return true;//Why not do this?
}
更新:ハンドラーが何をするかについて、いくつかの説明を追加する必要があるかもしれないと思います。このハンドラーを通過するリソースに対するすべての要求はハッシュされます。ハンドラーは要求を復号化し、アセンブリからリソースをプルするか、プロジェクト独自のローカルリソースを要求することにより、リソースを提供します。ドメインの不一致が発生するのは、そのローカルリソースがハンドラーによって要求されたときだけです。振り返ってみると、おそらく別の方法で処理する必要があると思いますが、元の質問に関しては、MITM攻撃がどのように適用されるかはまだわかりません。この場合、すべての証明書を受け入れるのが安全だと思いますが、100%ではありません。なぜ私はそれをここで育てたのですか。:)