2014-03-13 144 views
0

我正在创建一个多人游戏HTML5 P2P游戏;我想用WebRTC在没有服务器的情况下进行通信。WebRTC是否支持多人HTML5游戏?

我知道有没有办法阻止来自浏览器的JS修改,但无论如何,我想知道:WebRTC是否足够安全? 用户可以即时修改数据包包含的内容吗?或者DTLS + SRTP是否可以防止这种情况发生?如果我与另一位玩家进行交流,那么用户B如何确保数据包自写入以来未被修改?

我会说这是因为TLS涉及Diffie-Hellman密钥交换;并且所有的通信都应该使用SHA进行AES +签名。所以我猜这是安全的。

我错了吗?

+4

当然不是。信任来自敌对客户的数据基本上是不可能的。 – SLaks

+1

如果连接已加密,则可以确保打包未被修改。但是,如果你不信任你的同行客户,你不能相信*写了什么。 – Bergi

回答

3

用户可以即时修改数据包包含的内容吗?

抑或DTLS + SRTP从预防?如果我与另一个玩家沟通, 用户B如何确定数据包自从 被写入以后未被修改?

是的。

但是,如果您不信任A,您不能相信他确实写了什么

1

客户端上的任何内容都不能防止欺骗。请记住,浏览器只是让用户发送消息到您的服务器(或您的案例中的其他用户)的手段。一个坚定的恶意个人可以在没有浏览器的情况下自己编写消息。

存在加密以防止第三方读取/更改在两个人之间发送的消息。它绝不会阻止两个人中的一个发送超出您预期的其他消息并正确签名。

你可以做的是验证每个客户端从另一个“有意义”接收到的消息,它们适合接收到的上下文。一个简单的例子是一个棋牌游戏,玩家发送消息那会在一个无法合法移动的地方传送他的作品。在这种情况下,如果两个玩家都知道游戏的状态(我认为必要),那么第二个玩家可以并且应该确定该移动是无效的并且以某种方式回应(终止游戏或试图从无效状态中恢复) 。