1

我最近受到了一次简单的 CSRF 攻击,并意识到我的很多 ajax 脚本都是开放的。这些可以在我的网站上使用 $.post() 访问。

有没有办法自动将 PHP 令牌添加到所有这些中,还是我需要一个接一个地完成所有这些?

4

2 回答 2

3

使用 bwoebi 的答案,我找到了一个更好的解决方案。jQuery 有一个内置的 ajax 设置函数。

<script>var token ="<?= $_SESSION['token'] ?>";</script>
<script>
jQuery.ajaxSetup({
    data: {
        token: token
    }
});
</script>

这会将您的令牌添加到每个 jQuery 请求中!

于 2013-05-04T21:14:40.230 回答
1

一个想法是替换您的$.post功能:

jQuery["post"] = function (url, data, callback, type) {
    data["token"] = token; // where token is a global variable
    // you write in a <script> 'var token = <?php echo $_SESSION["token"]; ?>;'
    return jQuery.ajax({ // copied from the jQuery code
        url: url,
        type: "POST",
        dataType: type,
        data: data,
        success: callback
    });
};

所以你只需要在包含 jq-lib 之后添加这个小代码。

于 2013-05-04T20:31:38.573 回答