Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 为什么不信任所有http证书_.net_Security_Ssl - Fatal编程技术网

.net 为什么不信任所有http证书

.net 为什么不信任所有http证书,.net,security,ssl,.net,Security,Ssl,我已经编写了一个资源管理器处理程序,用于为组织中的几个不同站点提供资源(js/css)。大多数站点都是内部站点,但少数是外部站点,并且使用ssl。QA/Dev站点没有与证书相同的域名,因此需要我使用回调进行自定义验证。我理解我可以做一些事情,比如检查我的环境,只有在不在生产环境中时才返回true,或者检查域名,如果它与我的qa/dev域匹配,则返回true。我的问题不是怎么做,而是为什么?为什么接受资源处理程序的所有证书对我来说是不安全的?用户实际上会做什么恶意的事情 ServicePointM

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

这违背了HTTPS的目的


如果您接受所有证书,任何人都可以使用自签名证书运行中间人攻击,它将正常工作。

这违背了HTTPS的目的


如果您接受所有证书,任何人都可以使用自签名证书运行中间人攻击,这将正常工作。

您需要验证与您交换机密的人的身份,否则他们可能是冒名顶替者

从客户端到服务器,活动的MITM攻击者可以使用他们自己的证书,并在您不注意的情况下将流量中继到真正的站点。检查一下这个问题

在接受客户端证书时(从服务器的角度)。你会和客户在一起,但你不会告诉你客户是谁。客户端证书用于身份验证,您可以通过允许任何内容而不进行额外验证来绕过身份验证(这使得此步骤毫无用处)

编辑(您刚刚添加了它是从服务器端的角度):


大概,您正在做的是接受任何证书,然后将其包含的名称作为用户身份。这样做的缺点是,你实际上并没有进行任何身份验证:你只是接受了用户声称的表面上的名字。这有点像接受一张写着“我的名字是X”的纸,而不是检查一个正式的身份证(例如护照)。

你需要核实你与之交换秘密的人的身份,否则他们可能是冒名顶替者

从客户端到服务器,活动的MITM攻击者可以使用他们自己的证书,并在您不注意的情况下将流量中继到真正的站点。检查一下这个问题

在接受客户端证书时(从服务器的角度)。你会和客户在一起,但你不会告诉你客户是谁。客户端证书用于身份验证,您可以通过允许任何内容而不进行额外验证来绕过身份验证(这使得此步骤毫无用处)

编辑(您刚刚添加了它是从服务器端的角度):


大概,您正在做的是接受任何证书,然后将其包含的名称作为用户身份。这样做的缺点是,你实际上并没有进行任何身份验证:你只是接受了用户声称的表面上的名字。这有点像接受一张写着“我的名字是X”的纸,而不是检查一个正式的身份证(例如护照)。

你会很容易受到中间人攻击,因为你信任任何提供给你的证书

中间人攻击只有在攻击者能够模拟每个端点并使另一个端点满意时才能成功—这是对(或缺乏)相互身份验证的攻击


您将容易受到中间人攻击,因为您信任提供给您的任何证书

中间人攻击只有在攻击者能够模拟每个端点并使另一个端点满意时才能成功—这是对(或缺乏)相互身份验证的攻击


证书很容易伪造。信任所有证书会使您容易受到来自不受信任站点的任意数量的攻击。此外,证书存在的原因是因为假定存在一些您不信任的人或证书。这是服务器端代码还是客户端代码?代码看起来像客户端代码,您的描述听起来像服务器代码。@fbfcn,这是客户端代码。@Bruno-是服务器端代码。@SilverNinja:[…]一种用于客户端自定义验证服务器证书的方法。证书很容易伪造。信任所有证书会使您容易受到来自不受信任站点的任意数量的攻击。此外,证书存在的原因是因为假定存在一些您不信任的人或证书。这是服务器端代码还是客户端代码?代码看起来像客户端代码,您的描述听起来像服务器代码。@fbfcn,这是客户端代码。@Bruno-是服务器端代码。@SilverNinja:[…]一种用于客户端自定义验证服务器证书的方法。我确实理解,但在提供css或JS的上下文中,我想我不理解中间人攻击将如何应用。@fbfcn:MITM可以添加恶意JS来任意更改页面(例如,添加键盘记录器),因为这是服务器端,服务器不必为MITM攻击而受损吗?我同意@SliverNinja,我