我使用此函数发送ajax请求:
function myFunc(x)
{
$.ajax({
url: retrive.php,
type: 'POST',
data: 'data=' + x,
success: callback
});
}
我用整数参数调用该函数。例如:
myFunc(20);
myFunc(25);
黑客可以更改myFunc()的参数吗?
如果他可以,如何防止改变价值?
发送安全参数的最佳方法是什么?
** 编辑: **
我的javascript代码有一个名为Score的变量
此变量加1:
if(condition)
{
Score++;
}
游戏结束后,我用Ajax发送变量 这个带有游戏代码的变量存储在数据库中。
if(game_over)
{
myFunc(20, Score); // game code, score
}
但是这个值可以由用户改变。(通过铬和萤火虫控制台)
1.解决方案是什么?
2.这种攻击的名称是什么?是Xss吗?
答案 0 :(得分:3)
是的,黑客肯定可以,也很容易。例如,通过使用Chrome开发人员工具,您可以注入或修改脚本。作为一个激励性的例子,当我订购比萨饼时,我经常这样做,以便更快地送货;)
因此,您不应该依赖JavaScript身份验证。相反,让您的服务器验证或拒绝参数,或在服务器和JavaScript之间使用某种挑战/接受系统。
您可以尝试以下更多提示:Ajax post request security
答案 1 :(得分:2)
黑客可以更改myFunc()的参数吗?
是的,他可以。
如果他可以,如何防止改变价值?
您无法阻止它,但您可以验证服务器端代码中的参数。
发送安全参数的最佳方法是什么?
您可以使用mcrypt_encrypt()函数加密字符串或数据,在接收数据时可以使用mcrypt-decrypt()函数,您可以使用PHP的其他编码方式
您可以查看PHP mcrypt - Complete encryption and decryption of data
答案 2 :(得分:1)
与通过POST或HTML形式的GET发送参数相同。 它不可能保护它。 您只能使用某种加密方法,但是它的安全性不是很高,因为在服务器端需要解密它。在该解决方案的最后,不可能以100%的安全性对其进行加密。