2014-02-10 50 views
0

我對JavaScript非常熟悉,但我並不真正瞭解服務器端腳本。PHP-JavaScript安全

比方說,我的服務器上有一個有分數計數器的JavaScript遊戲。分數存儲在一個變量中,如果足夠高,則顯示一個存儲它的選項。然後將得分和用戶定義的名稱發送到服務器。 PHP腳本將字符串存儲到文件中。

現在的問題是: 什麼是保持用戶

(A)發送從外部腳本假比分PHP腳本

(B)修改JavaScript的網頁上欺騙並獲得更高的分數,或修改分數變量本身?

我沒有在任何腳本中使用eval()。所有的PHP文件都可以被所有人訪問,並且他們都使用POST。

回答

0

服務器必須有可能驗證高分,所以你必須發送每次更改狀態在遊戲中的JavaScript服務器。

您在Javascript中驗證的每一步都必須通過PHP驗證。

例如:

玩家在3秒內向右移動2步。 將每一步作爲動作發送到服務器。 驗證:玩家可以在X秒內移動最多的步數。 服務器總是知道玩家的位置。如果你僞造一個步驟,在1個請求中讓我們從位置1/1到10/1說,服務器回答:「檢測到作弊,不能飛!」。

或者讓服務器知道你的位置是5/5。玩家作弊:「從3/3移到10/10」。服務器知道:錯誤的起始位置+可用移動區域內的步驟太多。這是數學,JS發送「3 + 3 = 8」,PHP表示:false,3 + 3 = 6,客戶端作弊