Asp.net 如何防止在HTTPS服务器到服务器通信中的中间人攻击

Asp.net 如何防止在HTTPS服务器到服务器通信中的中间人攻击,asp.net,security,Asp.net,Security,我们将通过https连接到web服务。如果用户执行某个操作,这将在后台触发 链接将在服务器和web服务之间-用户不会意识到它 因为没有用户看到证书出现错误——因为这是服务器到服务器——我们如何减轻两个服务器之间的中间人攻击?如果尝试了一个而证书失败,代码中会发生什么 我们正在使用ASP.NET。如果您使用编写良好的HTTP客户端库来使用web服务,那么如果证书验证失败,调用将失败。正确的http客户端库将进行全面验证,包括确保它连接的主机名与证书的使用者名称匹配、CA正确等。我希望.NET的实现

我们将通过https连接到web服务。如果用户执行某个操作,这将在后台触发

链接将在服务器和web服务之间-用户不会意识到它

因为没有用户看到证书出现错误——因为这是服务器到服务器——我们如何减轻两个服务器之间的中间人攻击?如果尝试了一个而证书失败,代码中会发生什么


我们正在使用ASP.NET。

如果您使用编写良好的HTTP客户端库来使用web服务,那么如果证书验证失败,调用将失败。正确的http客户端库将进行全面验证,包括确保它连接的主机名与证书的使用者名称匹配、CA正确等。我希望.NET的实现在这方面是正确的,但是,您必须测试并验证默认行为是否正确。

这取决于您-您可以通过

ServicePointManager.ServerCertificateValidationCallback
参考:


默认实现非常合理-当验证失败时抛出异常。

关闭为主题外投票是很奇怪的。@MK.-如前所述,这既是设计问题也是安全工程问题。有更好的网站可以回答这个问题,因为细节很重要,要想正确回答可能很困难。到目前为止提供的答案还有很多需要改进的地方。@Jww那么什么是更好的站点?“正确的http客户端库将…CA是正确的等等”-不一定正确。在web安全模型中,拦截是一个有效的用例。这是中的覆盖的原因。这些覆盖允许攻击者破坏已知的良好引脚集。因此,您需要了解所使用的安全模型。“我希望.NET的实现在这方面是正确的…”-不,Microsoft使用web安全模型。@jww我完全不理解你的观点。“覆盖的原因…这些覆盖允许攻击者破坏已知的良好引脚集…”我感到困惑。还不清楚“web安全模型”是什么意思。你谈论它就像它是人们可以参考或使用的特定事物一样。如果你指的是5年前没有人验证TLS证书的现状,是的,这已经被打破,人们正在修复:)