我已经编写了一个资源管理器处理程序,用于为我组织中的几个不同站点提供资源(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%为什么这就是我在这里提出它的原因。:)