簡體   English   中英

阻止用戶從控制台執行JavaScript

[英]Stop user's executing JavaScript from console

我一直在努力創建一個使用HTML5技術的小型多人游戲。 我使用Node.js和Socket.IO來管理服務器端業務。

我的問題在於用戶能夠通過Chrome控制台(以及各種其他控制台確定)輸入自己的JavaScript。 例如,用戶可以將其輸入控制台:

socket.emit("new player", {user: username, x: localPlayer.getX(), y: localPlayer.getY()});

這將為游戲增加一個新玩家。 我應該采取什么樣的方法來阻止這種情況? 有沒有辦法可以捕獲這些條目並簡單地拒絕它們(然后將用戶扒在臉上)? 如果我可以通過更改變量來阻止他們編輯GUI之類的內容也會很好,例如:

gameStatus = "trolled lol troll client-side editing lol";

謝謝,喬爾

你不能這樣做。

你永遠不會相信來自客戶的任何東西。
即使您可能以某種方式影響您的頁面控制台,攻擊者也可以編寫自己的Web瀏覽器(閱讀:fork Chromium)並繞過您的限制。
或者攻擊者可以簡單地手動編寫HTTP請求,而無需任何瀏覽器。

相反,您需要驗證服務器上的所有內容。
每當任何客戶端執行某些操作時,服務器都需要檢查是否實際允許該客戶端執行此操作。

正如SLaks所指出的那樣,沒有辦法阻止某人進行黑客攻擊,而對於javascript / html客戶端來說更是如此,因為它更容易。 正如我在評論中所說,有些方法可以阻止或使其變得更難。 我發布了更多建議

  1. 混淆你的javascript代碼
  2. 使用加密方法並在使用密鑰發送之前加密對服務器的所有請求(使其難以找到密鑰)
  3. 使用與javascript客戶端中相同的加密方法和密鑰在服務器端解密您的請求。

我們不信任來自客戶端的內容的意思是完全按照您在創建表單時所做的操作。 您通常會檢查post方法,會話,與您要發送的有意義數據無關的唯一令牌 - 通常是在服務器端創建的隱藏文本輸入,並在提交表單時進行檢查。 搜索驗證和消毒表格。 除此之外,您應該記錄發送的數據,因此無法使用chrome或firebug上的網絡選項卡或甚至適當的流量分析器重建結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM