gpt4 book ai didi

javascript - 避免 CSRF JavaScript

转载 作者:行者123 更新时间:2023-11-28 08:48:21 25 4
gpt4 key购买 nike

我对网络安全还很陌生。我想知道在 javascript 中的请求上使用 token 来再次保护 CSRF 的正确方法是什么。有人能给我看一个代码示例吗?我知道如何正确处理带有提交按钮的表单。

dataType: "text",
url: '/username.php',
data: 'username=' + $('#username').val() + '&Rand=' + (Math.random()*10000),
type: 'GET',

这是我的脚本中的示例代码。它只是搜索用户名并返回用户名是否被使用。我们如何通过 Javascript 发送 token 并在 username.php 上验证它?谢谢

最佳答案

如果您知道如何在带有提交按钮的表单上执行此操作,那就没什么不同了。无论如何, token 生成必须在服务器上完成并存储。

即使您使用 Javascript,您也使用 PHP 来输出包含 javascript 代码的页面,对吗?

下面是一个非常快速的代码示例:

输出 javascript 的 PHP 文件的代码:

<?
$token = md5( mt_rand() . session_id() );
$_SESSION['token:'.$token] = true;
?>

您的 JavaScript:

dataType: "text",
url: '/username.php',
data: 'username=' + $('#username').val() + '&token=' + '<?=$token?>',
type: 'GET',

您的用户名.php:

if ( $_SESSION["token:".$_POST["token"]] == true ){
exit();
} else {
unset($_SESSION["token:".$_POST["token"]]);
}

请注意,上面的示例存在一些问题,例如“多次打开同一页面时 token 将被更新”之类的问题。因此它不是可供生产使用的代码。 [更新]我更新了代码以解决“ token 将更新...”问题。

但你明白了。

在服务器上生成 token ,在 JavaScript 中使用该 token ,然后在 username.php 中对其进行评估。

P.S.如果您的 javascript 是外部脚本文件,只需将其作为全局变量加载到加载 javascript 的页面上,并在外部 javascript 文件中使用该变量即可。

关于javascript - 避免 CSRF JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19473259/

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