簡體   English   中英

保護/驗證對服務器的JSON請求

[英]protecting/authenticating JSON requests to server

我正在使用Ajax將JSON數據發送到我的服務器以進行php腳本解析。

例如,這是將要輸出的JSON: http : //myserver.com/parse.php? user= 123& point=100& callback ......

然后“ parse.php”腳本將獲取URL中的點並將其用戶ID存儲在user = 123中。

但是,如果某人在瀏覽器上直接使用“ http://myserver.com/parse.php?user = 123&point = 100&callback ......”而不讓我的JavaScript對其進行初始化,則他們可以欺騙自己的觀點,他們可以在URL中設置為任意數量。

那么我如何保護/認證JSON請求呢?

如果要通過AJAX請求或類似的客戶端傳遞用戶點,則根本無法保護應用程序免受欺騙。 您的用戶告訴腳本他/她獲得了100分,您如何確定這是公平的數字? 傳遞您用來計算分數的初始數據,例如問題的有效答案或您要測量的內容。

如果您的應用程序中具有登錄機制,則可以在執行腳本時在服務器端檢查有效憑據,而無需通過GET / POST實際傳遞用戶標識符。

最后,在您的方法中,您可以檢查AJAX標頭和引用( $_SERVER['HTTP_X_REQUESTED_WITH']$_SERVER['HTTP_REFERER'] ),以確保請求來自您的JS代碼,但這實際上只是一個較小的問題調整,這很容易妥協。 另外,並非每個瀏覽器都傳遞引用標頭(取決於隱私設置),因此可能會出現其他問題。

要求用戶登錄才能調用parse.php。 如果請求未提供有效的會話ID,請拒絕采取措施。

不要在客戶端放置任何游戲數據和邏輯。 永遠不要信任客戶。 您始終必須計算服務器端。

更多信息(不依賴鏈接標題,答案中有很多信息): https : //gamedev.stackexchange.com/questions/3695/how-do-you-prevent-your-javascript-html5-web-從復制或更改的游戲

暫無
暫無

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

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