2014-03-13 187 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

客戶端上的任何內容都不能防止欺騙。請記住,瀏覽器只是讓用戶發送消息到您的服務器(或您的案例中的其他用戶)的手段。一個堅定的惡意個人可以在沒有瀏覽器的情況下自己編寫消息。

存在加密以防止第三方讀取/更改在兩個人之間發送的消息。它絕不會阻止兩個人中的一個發送超出您預期的其他消息並正確簽名。

你可以做的是驗證每個客戶端從另一個「有意義」接收到的消息,它們適合接收到的上下文。一個簡單的例子是一個棋牌遊戲,玩家發送消息那會在一個無法合法移動的地方傳送他的作品。在這種情況下,如果兩個玩家都知道遊戲的狀態(我認爲必要),那麼第二個玩家可以並且應該確定該移動是無效的並且以某種方式迴應(終止遊戲或試圖從無效狀態中恢復) 。