我最近受到一個簡單的CSRF攻擊,並意識到我的許多ajax腳本是開放的。這些可以在我的網站上用$ .post()訪問。
有沒有辦法自動添加一個PHP令牌給所有這些,或者我需要通過並一一做這件事?
我最近受到一個簡單的CSRF攻擊,並意識到我的許多ajax腳本是開放的。這些可以在我的網站上用$ .post()訪問。
有沒有辦法自動添加一個PHP令牌給所有這些,或者我需要通過並一一做這件事?
使用bwoebi的答案,我發現了一個稍微好一點的解決方案。 jQuery有一個內置的ajax設置功能。
<script>var token ="<?= $_SESSION['token'] ?>";</script>
<script>
jQuery.ajaxSetup({
data: {
token: token
}
});
</script>
這會將您的令牌添加到每個jQuery請求!
一個想法是,以取代$.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庫中,還是應該創建一個新文件? – hellohellosharp 2013-05-04 20:41:16
我會將它寫入一個新文件中,以便它在lib的更新中不會丟失。 – bwoebi 2013-05-04 20:42:48
好吧,剛剛發現我的一些代碼使用了傳統的'.ajax({type:「POST」,'code。有沒有辦法重寫這個呢? – hellohellosharp 2013-05-04 21:05:57
+1比我的更好:-) – bwoebi 2013-05-04 21:37:11