2015-04-07 57 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

相关问题