【问题标题】:Secure commands though client and server通过客户端和服务器的安全命令
【发布时间】:2013-02-01 21:37:33
【问题描述】:

我在 Javascript 中使用 Fancy WebSockets 与我的 php 服务器进行通信以进行多人游戏。

但现在,我只是将原始套接字 (json) 发送为

Sending: {"command": "login", "data": {"id" : "1575","md5" : "6bd8937a8789a3e58489c4cfd514b1a7","username": "densortekat"}} index.php:58
Sending: {"command": "inroom"} index.php:58
Reciveing: {"command": "roombg","data" : "shop.png"} index.php:83
Reciveing: {"command" : "NEWUSER","data" : { "username" : "densortekat","seat_id" : "29","room_id" : "9"}} index.php:83
Sending: {"command" : "move", "data" : { "seat_id" : "53"}} index.php:58
Reciveing: {"command": "move", "data" : {"username" : "densortekat", "seat_id" : "53"}} index.php:83
Sending: {"command": "request_trade", "data" : "densortekat"} index.php:58
Reciveing: {"command":"trade", "data": {"username":"densortekat"}} index.php:83
Sending: {"command":"ping"} 

我的问题是,我如何从 javascript 到 PHP 以及 PHP->Javascript 加密数据的相同方式,所以其他人看不到发生了什么?

【问题讨论】:

    标签: php javascript security sockets websocket


    【解决方案1】:

    请参阅html5 Websocket with SSL - 如果您的初始页面是 HTTPS (SSL/TLS),那么其上的 websockets 也是如此。

    【讨论】:

    • 是的,我知道,但用户仍然可以自己发送 {"command":"something"} 并“操纵”客户端->服务器
    • 哦,我不认为这是你的问题。也许你应该重新制定它。
    • @kim:这就是信任客户的乐趣。你可以想出一些混淆方法来让作弊变得更烦人,但你永远无法修复它。尝试绘制客户端/服务器关系的边界,以确保在服务器上完成足够的关键计算以使游戏值得信赖。
    【解决方案2】:

    您不能确定在客户端激活了 javascript,但真正的问题是,您无法知道您从服务器发送和接收到客户端的数据是由 javascript 处理的,而不是由用户。

    作为一个恶意用户,我可以向您发送我自己伪造的上述数据,而不是由您的 js 代码计算的数据。无法从带有任何证书的客户端接收数据,该证书表明“此数据由受信任的 js VM 生成,而不是由用户伪造/操纵”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      相关资源
      最近更新 更多