【问题标题】:Should Sockets be secured套接字是否应该被保护
【发布时间】:2010-12-17 14:32:44
【问题描述】:

我正在为我的一个宠物项目开发更新功能,并且想知道是否需要花时间确保我的连接安全?

基本上,客户端将用户计算机上的软件版本号发送到服务器,服务器会根据可用的最新版本检查用户版本,如果有更新的版本可用,服务器会发送一个可以进行更新的 url下载自。

通过这种简单的通信,是否有必要担心 SSL 或其他安全措施?

我正在用 C# 编写更新服务器和客户端,这是我第一次在 C# 中使用套接字。

【问题讨论】:

    标签: c# security sockets ssl


    【解决方案1】:

    如果您不使用 SSL,攻击者可能会使用到您服务器的虚假记录来毒害客户端计算机的 DNS 记录,实际上指向攻击者的虚假服务器。

    当好奇需要升级的客户端尝试联系 www.yourdomain.com 时,操作系统将发出 DNS 请求以查找与该名称关联的 IP 地址。客户端 DNS 请求将发送到该客户端上配置的任何 DNS 服务器。例如,客户端 DNS 服务器可能是他们的无线路由器,而后者又被配置为联系 ISP DNS 服务器。 ISP 的服务器联系根权限,根权限将请求转至您的“权威”DNS 服务器。此时,在正常(未破解)场景中,客户端首先联系的 DNS 服务器接收并缓存响应。该响应又被发送到客户端,以满足名称到 IP 地址映射的请求。

    联系附近的 DNS 服务器的目的是允许该服务器缓存响应,以便随后对相同名称的查找快速返回,而不会产生网络外流量。这个缓存可能是一个弱点。如果攻击者“毒害”要查询的 DNS 缓存,他们可以有效地“劫持”您的名称到 IP 地址的映射,从使用该缓存的客户端的角度来看。

    然后,假服务器可以通知客户端“升级”到特洛伊木马软件。

    所以答案“取决于您的责任”。无论您描述的协商结果如何,都应该适用于下载客户端——否则攻击者可能会在下载过程中更改下载的内容。

    我建议您使用 SSL,但答案取决于业务因素,而不是版本协商的技术细节。

    上面的答案忽略了最近发现 SSL 的事实vulnerable to man-in-the-middle attacks. 这将很快被各种 SSL 实现修复,我真的只是顺便提一下。这没什么好担心的,关键是 SSL 的设计正是为了防止我描述的那种攻击。

    【讨论】:

    • 在这种情况下,我认为木马无论如何都必须在我的服务器上。目前我没有返回整个网址,我只返回其中的一部分。例如:该文件将始终位于 http:\\www.mydomain.com\downloads\\,所以我只传回 url 的第二部分 (\ ) 然后我在客户端组装字符串。我还应该担心吗?
    • 不,木马不必在服务器上。是的,您仍然应该担心。我认为您最好阅读“中间人”和“DNS 中毒/DNS 劫持”。问题是,虽然您知道 www.mydomain.com 指向您的服务器,但攻击者可以混淆客户端计算机,使其认为它指向其他地方。这并不难完成,但可以在其他地方找到详细信息。
    • -1:SSL 阻止了您在此处描述的场景:DNS 缓存中毒是一种攻击,但它本身与 SSL 相比无效:攻击者需要能够为有问题的域,以便您描述的事情发生,否则 CN 不匹配会导致 SSL 握手失败。请记住,SSL 涉及身份验证和加密。
    • DarkSquid:这正是我建议他使用 SSL 的原因。这就是我的观点。再读一遍。另外,赶上新闻——SSL 在 3 天前被中间人破坏了。
    • 我可以看出我的写作技巧如何影响你的阅读技巧,所以我编辑了前两句以明确我的意思。最后一段应该已经说得很清楚了,但我想如果你不明白我所说的“假装 SSL...”是什么意思。我的意思是,“SSL 应该保护你免受这种情况的影响,让我们假装它昨天没有被破坏。”
    【解决方案2】:

    简短的回答:我肯定会在这里使用 SSL —— 你想确定答案(“是的,新版本 - 就是这样”)来自你,而不是中间人攻击者。

    哦,还有一点:就“花时间做这件事”而言,SSL 对开发人员来说基本上是免费的:尽管您必须付费并在服务器上安装 SSL 证书,但客户端 -副业基本上为零(例如,使用 https://,而不是 http://)。

    编辑: 虽然在 cmets 中提到过,但无需花费大量现金购买 SSL 证书。例如,GoDaddy 以 9 到 12 美元的价格出售 SSL 证书(取决于今天的报价)。尽管威瑞信代表可能希望您这么想,但没有充分的理由花数百美元购买“品牌名称”SSL 证书:现代浏览器拥有强大的根 CA 列表,其中包括这些廉价的 SSL 证书家伙。

    【讨论】:

    • -1: $495 几乎不是“免费”的,而且还因为误解了我的答案,-1-ing 它,然后引用它 vis man-in-the-middle。
    • HH - 495 美元是从哪里来的?如果您正在考虑 VS 证书,有很多更便宜的供应商:我通过 GoDaddy 为我的 SSL 证书支付了大约 9 美元。另外,如果我真诚地不同意你关于过度炒作的 SSL 攻击的影响,我很抱歉伤害了你的感受。您通常会以这种方式进行报复,还是您只是在这里度过了糟糕的一天?干杯..
    • 您是否通常会误读答案,否决它们,然后发布一个重申它们的答案,或者您只是在这里度过了糟糕的一天?对于我提到的 SSL 攻击,您甚至不同意我的看法。在您投反对票之前,您只是懒得阅读我写的内容。那是超级蹩脚的,你应该被召唤。如果你然后想指责我“谩骂”,但不能指出你指责之前的例子,并进一步指责我“报复”,我猜你是在做损害控制。你的真名是什么,哦,化名的评论家?
    • HH:我读了你的帖子。如前所述,我不同意并提供了原因(CN 不匹配)。欢迎你不同意我的不同意见(我可能是错的,就像以前很多次一样),但坦率地说,我对你的回答的“热度”感到困惑。也许您将我与您所写内容的分歧误认为是某种广泛的人身攻击(我注意到您对我的个人指责,以及您的“谁因嫉妒而投反对票?”的评论消失了),但请放心,我是只是不同意你所说的。没关系。没有必要在这里感到焦虑。
    • 事实上,您并没有不同意我写的内容。你误解了我写的内容,然后不同意你的误解。我对你的错误描述(在这一点上似乎是故意的)和其他任何事情一样被冒犯了。正如您所暗示的,我从未误解过在身份验证中使用证书。你误读了,并继续坚持认为你的误读是我的本意。那是冒犯的。在这一点上,你似乎是一个旋转大师。
    【解决方案3】:

    取决于你的目的。如果您需要第三方难以拦截的连接,可以使用加密/SSL。如果您要在网络资源或处理资源昂贵的地方发送信息,您可能需要重新考虑使用安全通道的决定。如果您要向/从移动设备发送信息,[从优到优] 加密/解密技术的成本非常高,并且会减慢应用程序的通信能力。此外,如果您尝试发送非常突发或密集的信息(即视频或音频+视频流)加密,则会将传输速度降低到没有它时的一小部分。

    【讨论】:

      猜你喜欢
      • 2017-01-20
      • 2010-10-05
      • 2012-02-26
      • 2013-12-01
      • 2013-01-07
      • 2015-01-14
      • 1970-01-01
      • 2022-08-29
      • 2023-03-19
      相关资源
      最近更新 更多