java - 安全性:如果我在建立连接时已经对连接进行了标记,那么有必要在 .writeUTF() 中使用 JWT 吗?

标签 java sockets security

我制作了一个游戏,其中用户为了获得身份(登录屏幕),向服务器创建一个 socket.writeUTF(username,password); 并取回 token ,它已签名并包含用户 ID。

使用此 token ,每个用户都可以向服务器发出请求,例如移动、跳跃...

但我的问题是:如果我创建一个到服务器的新连接(我正在使用套接字)并且我如上所述使用用户 token 来保护该连接,我是否仍然需要在每个套接字上发送和验证 token 互动?

黑客可以通过某种方法使用其他用户的套接字向服务器发送查询吗?也许向端口“123456”中的套接字发送“跳转”请求?

否则,一旦建立连接,服务器上的套接字仅监听一个确切的 IP,并且无法从其他电脑使用该套接字,因此无需发送 token 并验证它?

如果有人知道这是如何工作的,我可能不会验证每一次交互。

最佳答案

除非您使用安全套接字,即 SSLSockets,否则您的连接并不安全。有大量的攻击媒介是通过不安全的连接开放的,是的,您甚至可以将数据包欺骗到服务器,假装它们来自用户。

因此,最简单的选择是忘记您的 token 并切换到 SSLSocket。请记住,安全是很困难的。除非您对信息安全有很好的了解,否则您自己制作的任何东西都将是不安全的。

关于java - 安全性:如果我在建立连接时已经对连接进行了标记,那么有必要在 .writeUTF() 中使用 JWT 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49497464/

相关文章:

c# - 使用 Readline 后我的应用程序(服务器/客户端)被阻止

c# - 在 ZeroMQ C# 中断开套接字

django - Django 的安全性如何

java - 抛出消息包含违规值的异常是否正确或安全?

java - 如何用android做标量测试?

java - Hive - 从字符串中删除子字符串

c# - 如何正确关闭在线程中打开的 TcpClient

security - 阻止直接访问 Struts2 中的 *.jsp 和 *.action

java - 如何使用 gson 库形成 json 以循环遍历对象、列表?

java - 为什么会有人想在 Java 中将一个接口(interface)放在一个接口(interface)中?