【问题标题】:Network service security: network message size must be known?网络服务安全:必须知道网络消息大小?
【发布时间】:2010-10-16 13:59:12
【问题描述】:

服务器/客户端应用程序通过 TCP 连接使用 XML 格式的数据相互通信。这太棒了,因为我不必担心序列化/反序列化复杂数据。

为了允许接收 XML 数据,我将 XML 文档长度(以字节为单位)添加到通过网络套接字发送的数据中;通过这种方式,接收应用程序知道在反序列化 XML 格式数据之前读取了多少数据。

现在我试图想象在使用这种消息传递结构的客户端/服务器应用程序上可能存在的安全漏洞。

除了与传输数据相关的问题外,我认为 XML 格式的数据可以保护服务器免受恶意消息的侵害。不是吗?如果答案是正确的,剩下的唯一问题是如果恶意客户端向我发送声明消息大小很大的消息(通过更改插入消息开头的整数)会发生什么。

结果将是 DOS,因为天真的服务器处理非常非常大(合法)的消息...

是否可以避免“消息大小”信息?如何防止 DOS 攻击?

【问题讨论】:

  • 没有足够的关于您的自定义协议的信息。您不应该重新发明小麦,SOAP 在各方面都更好。

标签: xml security networking


【解决方案1】:

网络层将阻止您读取比可用数据更多的数据 - recv 调用将被阻止。所以是的,根据您的实现,这可能会导致 DOS。

如果您还没有这样做,请使用select。您可以将客户端列表传递给select,该函数将返回一个准备好接收的客户端。这样恶意客户端就无法阻止服务器。

【讨论】:

  • 服务器是多线程的,并且已经使用了非阻塞套接字。该问题本质上是由于服务器必须在“理解”网络消息之前缓存接收到的数据。我试图了解是否存在更好的方法来处理太大的消息。
猜你喜欢
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多