2015-04-07 119 views
2

我發送AJAX請求與此功能:在Ajax請求中發送安全參數的最佳方式是什麼?

function myFunc(x) 
{ 
    $.ajax({ 
     url: retrive.php, 
     type:  'POST', 
     data:  'data=' + x, 
     success: callback 
    }); 
} 

我調用該函數與parameter.for例子的整數:

myFunc(20); 
myFunc(25); 

可以黑客改變myFunc的的參數()?
如果他可以,如何防止改變價值?
發送安全參數的最佳方式是什麼?

** 編輯: **

我的JavaScript代碼有一個名爲Score的變量。
這個變量遞增:

if(condition) 
{ 
    Score++; 
} 

當比賽結束後,我送變量與阿賈克斯。
這個遊戲代碼的變量存儲在數據庫中。

if(game_over) 
{ 
    myFunc(20, Score); // game code, score 
} 

但這個值可以由用戶來改變。(由鉻和螢火蟲的控制檯)
1.如何解決?
2.這種攻擊的名稱是什麼? Xss?

+0

您必須對此進行用戶服務器端驗證..因爲可以在到達服務器之前始終更改參數。 –

+0

不要擔心客戶端代碼,它沒有按照定義進行保護。確保你的後端是防彈的。 – dfsq

回答

3

是的,黑客肯定可以,而且很容易。例如,通過使用Chrome開發人員工具,可以注入或修改腳本。作爲一個激勵性的例子,當我點一個披薩來讓它傳遞得更快時,我經常這樣做);

所以,你不應該依賴JavaScript驗證。相反,請讓服務器驗證或拒絕參數,或者在服務器和JavaScript之間使用某種挑戰/接受系統。

這裏有一些更多的想法,你可以嘗試:Ajax post request security

2

黑客可以改變myFunc的參數()?

是的,他可以。

如果他可以,如何防止改變價值?

你不能阻止它,但你可以驗證服務器端代碼中的參數。

什麼是發送安全參數的最佳方式?

你可以做的是,你可以使用mcrypt_encrypt()功能,加密您的字符串或數據和接收數據時,您可以使用mcrypt-decrypt()功能,否則你可以使用PHP

您的其他編碼方式

您可以檢查PHP mcrypt - Complete encryption and decryption of data

+0

我不希望用戶(黑客)將參數從20更改爲25.現在,解決方案是什麼?(如果我使用mcrypt,問題沒有解決。) – Garme

+0

您無法阻止用戶更改參數但你可以做的是你可以加密你的數據,所以用戶可能無法知道你在數據中傳遞什麼 –

+0

所以加密值可以一起移動。 – Garme

相關問題