gpt4 book ai didi

php - 保护 jquery ajax 到 php 连接的安全

转载 作者:行者123 更新时间:2023-12-02 21:52:36 26 4
gpt4 key购买 nike

我的ajax代码是:

$.ajax({
type: "POST",
url: "save.php",
data: {
name: $(this).attr('name'),
value: $(this).val(),
id: <?php if(!empty($_SESSION['user'])) echo $_SESSION['user'];?>
}
});

在 save.php 中我正在检查这个条件:

if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SESSION['user']!=$_POST['id']){
//then show an error
}

这是防止未经授权调用 save.php 的正确方法吗?

最佳答案

一般来说..

Anything at the client side is insecure. Therefore, any script may be called from anybody at any time using any set of parameters.

保护特定脚本

因此,我们需要在服务器端准备一些东西,以便在稍后的时间点验证某些内容是否有效。

我们将其称为安全 token 。安全 token 需要是足够长且随机的字符串。安全 token 需要不可预测。在这种情况下,只有服务器端应用程序可以作为此 token 的来源。

将此安全 token 保存到用户的 session 中并将其传递给客户端。将安全 token 与要保护的脚本调用相关联。您的 session 可能具有以下属性:

$_SERVER[ 'sys$securityTokens' ] 
= array(
'AHSsd67sdSJDH/D6wehsd'
=> array( 'script' => 'sensibleScript.php',
'params' => array( 'kid' => 3, 'var5' => 12 )
),
'KSD87sd78sdsfk(DDF/sd'
=> array( 'script' => 'someOhterSensibleScript.php',
'params' => array( 'value' => 'welcome!' )
)
);

请注意,此结构将安全 token 与脚本名称和有效参数相关联以供稍后调用。

如果客户端需要使用 JavaScript 调用脚本,它将安全 token 传递回服务器。

在服务器端...

如果收到合理的脚本请求,并且正确的安全 token 是请求的一部分,请从 session 中删除安全 token 并执行脚本。

如果合理的脚本请求没有安全 token ,则拒绝该请求。

关于php - 保护 jquery ajax 到 php 连接的安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18304898/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com