在 Ajax 请求中发送安全参数的最佳方式是什么?
What is the best way to send secure parameter in Ajax Request?
我用这个函数发送了一个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++;
}
游戏结束后,我用Ajax发送变量。
并且这个带有游戏代码的变量存储在数据库中。
if(game_over)
{
myFunc(20, Score); // game code, score
}
但用户可以更改此值。(通过 chrome 和 firebug 的控制台)
1. 解决方法是什么?
2. 这种攻击的名称是什么?是Xss吗?
是的,黑客当然可以,而且很容易。例如,通过使用 Chrome 开发者工具,可以注入或修改您的脚本。作为一个激励人心的例子,我在订购比萨饼时经常这样做,以便更快地送达 ;)
因此,您不应依赖 JavaScript 身份验证。相反,让您的服务器验证或拒绝参数,或者在服务器和 JavaScript.
之间使用某种 challenge/accept 系统
您可以尝试以下更多想法:Ajax post request security
Can a hacker change the parameters of myFunc() ?
是的,他可以。
If he can, How to prevent change value?
您无法阻止它,但您可以验证服务器端代码中的参数。
What is the best way to send secure parameter?
你可以做的是你可以使用 mcrypt_encrypt() function for encrypting your string or data and while receiving data you can use mcrypt-decrypt() 函数,否则你可以使用 PHP
的其他编码方式
你可以查看PHP mcrypt - Complete encryption and decryption of data
这与通过 POST 或 GET over HTML 形式发送参数相同。
它不可能保护它。
你只能使用一些加密方法,但它不是很安全,因为在服务器端你需要解密它。在这个解决方案的最后,不可能以 100% 安全的方式对其进行加密。
我用这个函数发送了一个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++;
}
游戏结束后,我用Ajax发送变量。
并且这个带有游戏代码的变量存储在数据库中。
if(game_over)
{
myFunc(20, Score); // game code, score
}
但用户可以更改此值。(通过 chrome 和 firebug 的控制台)
1. 解决方法是什么?
2. 这种攻击的名称是什么?是Xss吗?
是的,黑客当然可以,而且很容易。例如,通过使用 Chrome 开发者工具,可以注入或修改您的脚本。作为一个激励人心的例子,我在订购比萨饼时经常这样做,以便更快地送达 ;)
因此,您不应依赖 JavaScript 身份验证。相反,让您的服务器验证或拒绝参数,或者在服务器和 JavaScript.
之间使用某种 challenge/accept 系统您可以尝试以下更多想法:Ajax post request security
Can a hacker change the parameters of myFunc() ?
是的,他可以。
If he can, How to prevent change value?
您无法阻止它,但您可以验证服务器端代码中的参数。
What is the best way to send secure parameter?
你可以做的是你可以使用 mcrypt_encrypt() function for encrypting your string or data and while receiving data you can use mcrypt-decrypt() 函数,否则你可以使用 PHP
的其他编码方式你可以查看PHP mcrypt - Complete encryption and decryption of data
这与通过 POST 或 GET over HTML 形式发送参数相同。 它不可能保护它。 你只能使用一些加密方法,但它不是很安全,因为在服务器端你需要解密它。在这个解决方案的最后,不可能以 100% 安全的方式对其进行加密。