Cookie 的跨站点请求伪造(CSRF)攻击 如何用ajax写
时间: 2024-02-27 11:51:40 浏览: 25
在使用 Ajax 发送请求时,也需要考虑防止 CSRF 攻击。下面是一些防御 CSRF 攻击的方法:
1. 在发送请求时,在请求头中添加一个自定义的 Token,服务器在接收到请求时需要验证该 Token 是否合法。攻击者无法伪造该 Token,因此可以有效防止 CSRF 攻击。
2. Cookie 设置为 HttpOnly 属性,防止 JavaScript 读取 Cookie。这样攻击者就无法通过 JavaScript 获取到用户的 Cookie,从而无法伪造用户的操作请求。
下面是一个使用 Ajax 发送请求时防御 CSRF 攻击的示例:
```javascript
// 获取 CSRF Token
function getCSRFToken() {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i].trim();
if (cookie.indexOf('csrfToken=') === 0) {
return cookie.substring('csrfToken='.length, cookie.length);
}
}
return null;
}
// 发送请求
function sendRequest() {
var xhr = new XMLHttpRequest();
xhr.open('POST', '/api/someapi', true);
xhr.setRequestHeader('X-CSRF-Token', getCSRFToken()); // 添加 CSRF Token
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
// 处理响应
}
};
xhr.send();
}
```
在这个示例中,我们通过 getCSRFToken 函数获取 CSRF Token,并在请求头中添加 X-CSRF-Token 属性。服务器在接收到请求时会验证该 Token 是否合法,从而防止 CSRF 攻击。