我最近遇到了简单的CSRF攻击,并意识到我的很多ajax脚本都是开放的。这些是在我的网站上使用$ .post()访问的。
有没有办法自动为所有这些添加PHP令牌,还是我需要逐个完成并一次性完成?
答案 0 :(得分:3)
使用bwoebi的答案,我找到了一个更好的解决方案。 jQuery有一个内置的ajax设置功能。</ p>
<script>var token ="<?= $_SESSION['token'] ?>";</script>
<script>
jQuery.ajaxSetup({
data: {
token: token
}
});
</script>
这会将你的令牌添加到每个jQuery请求中!
答案 1 :(得分: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之后添加这个小代码。