csrf攻击防护代码
时间: 2024-11-21 13:07:25 浏览: 15
CSRF (Cross-Site Request Forgery) 攻击是一种网络安全威胁,黑客会利用用户的已登录状态,通过恶意网站发送请求到目标网站,执行未经授权的操作。为了防止 CSRF 攻击,开发者通常会在代码中实施一些策略:
1. **Token验证**:在表单提交、敏感操作等关键步骤中添加一个随机生成的令牌(如CSRF Token),并在服务器端验证这个令牌是否一致。这需要将令牌存储在用户 cookies 或 session 中,并在请求头或隐藏字段中附带。
```javascript
// JavaScript 示例
document.getElementById('submit').addEventListener('click', function(e) {
var token = Cookies.get('csrf_token');
// 将token放入form的hidden field
e.target.querySelector('[name=csrf]').value = token;
});
// PHP 示例
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['_csrf'])) {
$token = session_get('csrf_token'); // 获取session中的token
if ($token !== $_POST['_csrf']) {
die('CSRF token mismatch!');
}
}
```
2. **同源策略**:限制只有来自同一个源(协议、域名、端口)的请求才能执行某些操作,减少跨域攻击的可能性。
3. **HTTP Only 和 Secure 设置**:设置 cookies 为 HTTP 只有或 HTTPS,防止通过 JavaScript 访问,增加安全性。
4. **刷新CSRF Token**:定期更新或替换CSRF令牌,防止长期有效导致的安全风险。
阅读全文