c# - 连接到 SSL 加密网站的安全性如何?

标签 c# webclient

我正在使用 WebClient 在客户使用我的应用程序之前实现安全帐户检查。但我担心的是“使用 HTTPS 协议(protocol)连接到使用 SSL 证书的网站是否可以防止 MATM 攻击并使整个通信加密?”。

换句话说:Wireshark 等程序是否能够像使用普通 HTTP 请求一样以纯文本形式获取请求和响应?是否有能力改变发送和接收的数据包?为了改变我的应用程序行为或其他东西。


[注意] 我不是在谈论让我的应用程序被盗版,因为我知道没有办法摆脱这种命运。

最佳答案

HTTPS does prevent Man in the middle attack ,只要双方都正确地实现了协议(protocol)并且我假设 WebClient 被正确地实现了。 这意味着即使是安装在本地盒子上的 wireshark 也无法解密流量

如果中间的某个人在途中更改数据包,另一方将无法读取它们,通信就会中断。

根据我们在您的评论中的讨论做出的一些澄清: 如果您的客户端没有受到损害(HTTPS 确实有效),上述情况成立,因为您假设您的客户端会 self 损害并使用将通过欺骗您的应用程序的工具>添加伪造的可信证书(需要管理员权限),我建议您使用two way ssl .

我所知道的像 Fiddler 这样的工具将无法仅通过添加其受信任的证书来解密它,从而使您的客户更难以以这种方式攻击您的应用程序,并带给他们使用调试器或对其进行修补,因为它比实现双向 ssl 代理更容易。

您还可以执行 this post 中描述的操作使用需要一个特定证书的代码覆盖框架的证书验证并忽略系统的受信任证书,这些证书被 Fiddler 等工具破坏(这实现了 Mark 建议的内容)。

关于c# - 连接到 SSL 加密网站的安全性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22132057/

相关文章:

c# - 为什么要跳过覆盖访问器?

c# - 为 RSA SecurID 开发的困难

c# - 获取 OleDbCommandBuilder 生成的 SQL 命令

c# - 在 C# 中将 3D 多维数组的 2D 部分作为 2D 方法参数数组传递

node.js - nodejs, expressjs 服务于 PHP 文件

c# - 如何增加 ASMX Web 服务的 POST 大小?

c# - 通过 C# 登录网站

c# - 我可以给我的本地主机应用程序一个 'web address format'

c# - 使用 WebClient 或 WebRequest 登录网站并访问数据

c# - 如何在 C# .NET 中从 GitHub 下载原始文件