使用UDP

时间:2017-03-26 20:01:20

标签: security udp client-server port ip-address

简介

我目前正在尝试从头开始为Unity构建网络层。目前我正在使用Node.js为服务器和客户端测试通过UDP的通信。但是我想实现的语言对我要求的内容无关紧要。

目前的方法

将Node.js用于服务器和客户端的当前方法非常基本。我只是将一个数据包从客户端发送到我的服务器,而客户端和服务器不在同一个本地网络中。两者都在路由器后面,因此也在NAT后面。

然后,服务器会回复从客户端发送的UDP数据包中收到的IP和端口的答案。

问题

我很担心客户端上有关在客户端计算机和路由器上打开端口的安全性。到目前为止,我认为我不需要做任何事情来保护客户端免受攻击者或其他任何可以对我的应用程序使用的端口做某事的事情。以下假设说明为什么我认为我不需要做任何事来保护客户。

假设

  1. 服务器正在设置回调。

  2. 服务器开始侦听特定端口,该端口也会转发到路由器内的服务器计算机。

  3. 服务器现在将在收到UDP消息时调用回调。然后,服务器将UDP消息发送到通过收到的消息获得的客户端的地址和端口。

  4. 客户端正在设置回调。

  5. 客户端开始侦听端口0,这对于Node.js的dgram来说意味着:

      

    对于UDP套接字,使dgram.Socket在命名端口和可选地址上侦听数据报消息。如果未指定port或为0,则操作系统将尝试绑定到随机端口。 - https://nodejs.org/api/dgram.html#dgram_socket_bind_port_address_callback

    • 因此,操作系统现在知道发送到此端口的数据包属于我的应用程序。
    • 没有人可以将此用于恶意内容。
  6. 了解服务器地址和端口的客户端启动向服务器发送UDP消息的过程。

  7. 客户端路由器收到UDP消息。 NAT创建一个随机端口(在公共端使用)并将其映射到客户端(本地)地址和端口。

    • 因此,路由器现在知道发送到公共地址的数据包和新生成的端口属于本地地址和端口。
    • 没有人可以将此用于恶意内容。
  8. 客户端路由器将包含公共地址和NAT生成端口的UDP消息发送到服务器。

    • 可能发生的最糟糕的事情是,中间人攻击者可以读取客户端发送的数据。由于它只是像游戏数据一样的位置等发送,这在开发基础知识时不是一个大问题。
    • 没有人可以将此用于恶意内容。
  9. 服务器收到消息并调用3中描述的回调。因此服务器发送到公共地址和NAT生成的客户端端口。

    • 可能发生的最糟糕的事情是,中间人攻击者可以读取服务器正在发送的数据。由于它只是像游戏数据一样的位置等发送,这在开发基础知识时不是一个大问题。
    • 没有人可以将此用于恶意内容。
  10. 与服务器路由器和服务器本地地址和端口相同。

  11. 与服务器路由器相同8.

  12. 客户端收到服务器的UDP消息,并调用处理消息内容的回调。

    • 由于客户端的本地端口绑定到我的应用程序,只有没有人可以将此用于恶意内容,因为如果内容不是来自真实服务器,我会忽略这些内容。
  13. 问题

    我的假设是否正确,我真的不需要保护客户免受任何会以任何方式损害客户的攻击?

0 个答案:

没有答案