我正在创建一个多人HTML5 P2P游戏;我想使用WebRTC在没有服务器的情况下进行通信。
我知道没有办法阻止JS从浏览器修改,但无论如何,我想知道:WebRTC是否足够安全? 用户可以在运行中修改数据包包含的内容吗?或者DTLS + SRTP阻止了吗?如果我与另一个播放器进行通信,用户B如何确保该数据包自写入以来未被修改过?
我想说的是,因为TLS涉及到Diffie-Hellman密钥交换;并且所有通信都应该是AES +用SHA签名。所以我猜这是安全的。
我错了吗?
答案 0 :(得分:3)
用户是否可以即时修改数据包包含的内容?
没有
或DTLS + SRTP阻止了吗?如果我与其他玩家沟通, 用户B怎样才能确定该包未被修改 它已经写好了吗?
是
但是,如果你不信任A,你就不能信任他写的。
答案 1 :(得分:1)
客户端上没有任何东西可以防止作弊。请记住,浏览器只是用户向您的服务器(或您的情况下的其他用户)发送消息的一种方式。确定的恶意个人可以在没有浏览器的情况下自己制作消息。
存在加密以防止第三方读取/更改两个人之间发送的消息。它绝不能阻止两个人中的一个发送超出您预期的其他消息并正确签名。
你可以做的是在每个客户端验证从另一个客户收到的消息“有意义”,它们适合他们收到的上下文。一个简单的例子是一个棋子游戏,玩家发送的消息是将他的作品传送到一个无法合法移动的地方。在这种情况下,如果两个玩家都知道游戏的状态(我认为必要),那么第二个玩家可以而且应该确定移动是无效的并以某种方式响应(终止游戏或尝试从无效状态恢复)