【问题标题】:Ways to secure Server communication保护服务器通信的方法
【发布时间】:2014-03-17 22:01:11
【问题描述】:

我在 node.js 上有游戏和服务器。 客户端->服务器是 VIA POST & GET。

现在我有客户端->服务器请求: 请求类型 POST。 /登录 {私有变量:“someVariable”}

之后,服务器生成公钥/私钥,将公钥发送给客户端。而从这一刻起, 所有客户端->服务器的请求都必须加密。

例如: 请求类型 POST。 /添加点 { userID: "someID", cryptedJSON: "some crypted JSON with add points request" }

但我的问题是: 当黑客知道 privateVariable 时,他/她将使用它来登录并接收公钥。从这一刻起,他/她可以使用接收变量进行破解。

您知道更好的安全选项吗?

【问题讨论】:

  • 使用 HTTPS。这样您就不必自己实现安全连接。
  • 我想保护请求,以免被黑客入侵。
  • 对此没有简单的答案:您只需通过正常方式使您的服务器无法破解。 拒绝执行在用户上下文中无效的操作。 不要公开诸如“加点”之类的操作:服务器必须知道何时这样做
  • 所以如果客户告诉我“离线游戏将在连接时更新记分牌”。我应该告诉他:“没有办法保护它”对吗?因为我有这样的请求: serveraddress/updateScore data: { user_id: "someId", token: "someToken", points: 100 } 而且不可能完全保护它吗?每个人都可以扫描数据包并查看请求。

标签: node.js security


【解决方案1】:

保护客户端和服务器之间连接的最佳方式是使用 HTTPS。

安全的 HTTP 通信依赖于SSL/TLS 协议。通过嗅探用户和服务器之间的数据(中间人攻击),任何其他方式都可以很容易地被黑客入侵。

请参阅此question and answer 以了解为什么无法嗅探 HTTPS。

【讨论】:

  • 是的。但是如果用户是黑客,他可以使用自己建立的 HTTPS 连接来发出未经授权的 CURL 请求,对吗?
  • HTTPS 仅以第三方(黑客)无法理解消息并滥用受保护信息的方式保护客户端和服务器之间的通信。如果您想限制您的用户执行某些操作,加密他们的消息与此无关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-11
  • 2017-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多