Security 使用UDP的客户端安全 介绍

Security 使用UDP的客户端安全 介绍,security,udp,client-server,port,ip-address,Security,Udp,Client Server,Port,Ip Address,我目前正试图从头开始为Unity建立一个网络层。目前,我正在使用Node.js为服务器和客户端测试通过UDP的通信。然而,我想实现的语言对我的要求并不重要 当前方法 当前对服务器和客户端使用Node.js的方法非常基本。当客户端和服务器不在同一个本地网络中时,我只需从客户端向服务器发送一个数据包。两者都在路由器后面,因此也在NAT后面 然后,服务器将应答发送回从客户端发送的UDP数据包中接收的IP和端口 问题 我对客户端关于客户端机器和路由器上打开的端口的安全性感到好奇。到目前为止,我假设我不需

我目前正试图从头开始为Unity建立一个网络层。目前,我正在使用Node.js为服务器和客户端测试通过UDP的通信。然而,我想实现的语言对我的要求并不重要

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

然后,服务器将应答发送回从客户端发送的UDP数据包中接收的IP和端口

问题 我对客户端关于客户端机器和路由器上打开的端口的安全性感到好奇。到目前为止,我假设我不需要做任何事情来保护客户端免受攻击者的攻击,也不需要做任何其他事情来处理我的应用程序使用的端口。下面的假设说明了为什么我认为我不需要做任何事情来保护客户

假设
  • 服务器正在设置回调

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

  • 服务器现在将在收到UDP消息时调用回调。然后,服务器将向接收到的消息所获得的客户端地址和端口发送UDP消息

  • 客户端正在设置回调

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

    对于UDP套接字,使dgram.Socket在指定端口和可选地址上侦听数据报消息。如果端口未指定或为0,操作系统将尝试绑定到随机端口。-

    • 因此,操作系统现在知道发送到此端口的数据包属于我的应用程序
    • 没有人可以用它来做恶意的事情
  • 客户机知道服务器的地址和端口,开始向服务器发送UDP消息的过程

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

    • 因此路由器现在知道发送到公共地址和新生成的端口的数据包属于本地地址和端口
    • 没有人可以用它来做恶意的事情
  • 客户端路由器向服务器发送包含公共地址和NAT生成端口的UDP消息

    • 最糟糕的情况是中间人攻击者可以读取客户端发送的数据。由于只发送游戏数据,如位置等,所以在开发基础时这不是一个大问题
    • 没有人可以用它来做恶意的事情
  • 服务器接收消息并调用第3节中描述的回调。因此,服务器向客户机的公共地址和NAT生成的端口发送数据

    • 最糟糕的情况是中间人攻击者可以读取服务器发送的数据。由于只发送游戏数据,如位置等,所以在开发基础时这不是一个大问题
    • 没有人可以用它来做恶意的事情
  • 和7号一样。使用服务器路由器和服务器本地地址和端口

  • 和8号一样。使用服务器路由器

  • 客户端接收服务器的UDP消息,并调用处理消息内容的回调

    • 由于客户端的本地端口绑定到我的应用程序,因此没有人可以将其用于恶意内容,因为如果内容不是来自真正的服务器,我将忽略这些内容
  • 问题: 那么,我的假设正确吗?我真的不需要保护客户端免受任何以任何方式伤害客户端的攻击吗