当前位置: 首页 > news >正文

CSRF 和 XSS 攻击分析与防范

CSRF 和 XSS 攻击分析与防范

CSRF (跨站请求伪造)

什么是 CSRF?

CSRF (Cross-Site Request Forgery) 是一种攻击方式,攻击者诱使用户在已登录目标网站的情况下,执行非预期的操作。

攻击流程

  1. 用户登录可信网站 A
  2. 在不登出 A 的情况下访问恶意网站 B
  3. B 诱导用户点击链接或加载资源,向 A 发起请求
  4. A 的服务器认为这是用户的合法请求,执行操作

CSRF 防范措施

1. 使用 CSRF Token
# Django 示例
from django.middleware.csrf import get_tokendef some_view(request):csrf_token = get_token(request)# 将 token 放入表单return render(request, 'template.html', {'csrf_token': csrf_token})# 在表单中
<form method="post">{% csrf_token %}<!-- 其他表单字段 -->
</form>
2. SameSite Cookie 属性
// 设置 SameSite 属性
Set-Cookie: sessionid=xxxxxx; SameSite=Strict; Secure; HttpOnly
  • Strict: 完全禁止第三方 Cookie
  • Lax: 宽松模式,允许部分安全请求携带 Cookie
3. 检查 Referer/Origin 头部
# Flask 示例
from flask import request@app.before_request
def check_referer():if request.method == "POST":referer = request.headers.get("Referer")origin = request.headers.get("Origin")if not (referer and referer.startswith("https://yourdomain.com")) and \not (origin and origin == "https://yourdomain.com"):abort(403)

XSS (跨站脚本攻击)

什么是 XSS?

XSS (Cross-Site Scripting) 是攻击者向网页注入恶意脚本,当其他用户访问时执行的攻击方式。

三种类型

  1. 存储型 XSS:恶意脚本存储在服务器上
  2. 反射型 XSS:恶意脚本作为请求的一部分返回
  3. DOM 型 XSS:完全在客户端执行的攻击

XSS 防范措施

1. 输入输出转义
// 转义 HTML
function escapeHtml(text) {const div = document.createElement('div');div.textContent = text;return div.innerHTML;
}// 转义属性
function escapeAttr(value) {return value.replace(/"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
}
2. 使用 CSP (内容安全策略)
Content-Security-Policy: default-src 'self';script-src 'self' https://trusted.cdn.com;img-src 'self' data:;style-src 'self' 'unsafe-inline';object-src 'none';
3. 设置 HttpOnly 和 Secure Cookie
Set-Cookie: session=xxxxxx; HttpOnly; Secure; SameSite=Strict
  • HttpOnly: 防止 JavaScript 访问 Cookie
  • Secure: 仅通过 HTTPS 传输
4. 使用现代框架的安全特性
// React 自动转义
const userInput = "<script>alert('xss')</script>";
return <div>{userInput}</div>; // 安全,会被转义// Vue 自动转义
<template><div>{{ userInput }}</div> <!-- 安全,会被转义 -->
</template>

综合防御建议

  1. 最小权限原则:所有资源请求使用最小必要权限
  2. 定期更新:保持框架和库的最新版本
  3. 自动化测试:使用安全扫描工具如 OWASP ZAP
  4. 安全编码培训:提高团队安全意识

通过组合使用这些技术,可以显著降低 CSRF 和 XSS 攻击的风险。

http://www.xdnf.cn/news/455527.html

相关文章:

  • Python爬虫第21节- 基础图形验证码识别实战
  • 前端的面试笔记——JavaScript篇(二)
  • 数字孪生工厂实战指南:基于Unreal Engine/Omniverse的虚实同步系统开发
  • 图像颜色理论与数据挖掘应用的全景解析
  • OrangePi Zero 3学习笔记(Android篇)9 - I2C和从设备
  • 【AI News | 20250514】每日AI进展
  • 如何通过命令提示符(CMD)检查虚拟化是否已启用
  • 任意复杂度的 JSON 数据转换为多个结构化的 Pandas DataFrame 表格
  • 吊舱夜视聚光灯模块设计的要点概述
  • vxe-table 同时实现合并单元格与任意列展开行
  • gmsh读取 STEP 文件并划分网格
  • eBPF 开源项目 Cilium 深入分析
  • Express项目解决跨域问题
  • 代码随想录 算法训练 Day1:数组
  • Vue 3 打开 el-dialog 时使 el-input 获取焦点
  • C#扩展方法的入门理解
  • 【证书与信任机制​】自签名证书的风险与适用场景​​
  • 白日梦:一个方便快捷的将故事制作成视频的工具
  • Codeforces Round 996 (Div. 2)
  • 【深入Spring系列】源码级深入剖析SpringBoot如何实现自动装载
  • 网络流量监控设备与质量监控
  • 基于IMX429-IMX430-IMX432-IMX437等sensor的SLVS桥MIPI透传模组方案
  • uniapp vue 沉浸式窗体如何获取并排除外部手机浏览器底部菜单栏工具栏高度
  • 第十九次博客打卡
  • 理解概率密度函数
  • LU分解求解线性方程组
  • 实验九视图索引
  • “AI+儿童陪伴”,是噱头还是趋势?
  • 数据结构学习之链表学习:单链表
  • Java—— 双列集合Map的实现类