【问题标题】:Preventing CSRF and XSRF Attacks for jQuery $.post防止 jQuery $.post 的 CSRF 和 XSRF 攻击
【发布时间】:2013-04-29 00:27:48
【问题描述】:

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

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

【问题讨论】:

    标签: php jquery http-post csrf


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      一个想法是替换您的 $.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 之后添加这个小代码。

      【讨论】:

      • 不错!我可以将它附加到我的 jQuery 库中还是应该创建一个新文件?
      • 我会把它写在一个新文件中,这样它就不会在更新库时丢失。
      • 好吧,刚刚发现我的部分代码使用了传统的$.ajax({type: "POST",代码。有没有办法重写这个?
      猜你喜欢
      • 2011-01-09
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 2010-12-05
      • 2021-06-26
      • 1970-01-01
      • 2015-09-28
      • 1970-01-01
      相关资源
      最近更新 更多