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

XSS攻击和CSRF攻击

XSS攻击(跨站脚本攻击,Cross-Site Scripting)

什么是XSS攻击?

XSS攻击是指攻击者将恶意编写的脚本代码(通常是JavaScript)注入到目标网站或其服务上。当其他正常用户访问这个被污染的页面时,这些恶意脚本会在用户的浏览器中执行。由于浏览器会信任来自目标网站的代码,所以这些脚本就如同网站本身的一部分一样运行,从而可能窃取用户信息、篡改页面内容或进行其他恶意操作。

核心原理:

XSS攻击利用了网站未能对用户输入进行充分过滤和转义的安全漏洞

网站通常需要接收和显示用户的输入(如评论、搜索内容、用户资料等)。如果网站直接将这些输入内容嵌入到HTML页面中,而没有处理其中的特殊字符,攻击者就可以巧妙地将JavaScript代码作为输入提交。当其他用户看到包含这些输入的页面时,浏览器就会解析并执行这段嵌入的恶意脚本。

类型:

存储型XSS:

这是最危险的一种。攻击者将恶意脚本提交并存储在目标网站的数据库中(例如,通过论坛发帖、留言板留言)。当其他用户访问读取这些存储内容的页面时(如查看帖子列表),恶意脚本会从数据库取出并显示,从而在用户浏览器中执行。这种攻击影响范围广,因为脚本被永久存储。


反射型XSS:

恶意脚本存在于URL参数中。攻击者构造一个包含恶意脚本的链接,诱骗用户点击。用户点击后,目标网站的服务器将这个恶意脚本“反射”回用户的浏览器(通常作为搜索结果、错误信息的一部分显示)。脚本在浏览器中执行。这种攻击通常需要用户点击特定的链接才能触发,影响范围相对较小。


DOM型XSS:

这种攻击不涉及服务器端的数据存储或反射,而是完全在客户端(浏览器)的DOM(文档对象模型)中发生。攻击者通过修改URL中的某些参数,这些参数被JavaScript代码读取并直接写入到DOM的某个位置(如innerHTML),如果处理不当,就可能执行恶意脚本。这种攻击绕过了服务器端的某些安全措施。

主要危害:

窃取用户凭证:

恶意脚本可以读取用户的Cookie(尤其是没有HttpOnly标志的)、Session ID,甚至诱导用户在当前页面输入账号密码。
 

会话劫持:

通过获取有效的Session Cookie,攻击者可以冒充用户执行操作。
 

钓鱼诈骗:

在页面上动态生成伪造的登录框或交易确认框,诱骗用户输入敏感信息。
 

篡改页面内容:

修改网页布局、文字,植入广告,或散布虚假信息。
 

重定向:

将用户重定向到恶意网站。

防御措施:
输入过滤/验证:

对所有来自用户的输入进行严格的检查,拒绝或清理包含潜在危险字符(如<, >, "等)的内容。
输出编码/转义: 在将用户输入的数据输出到HTML页面时,对其进行编码,将特殊字符转换为HTML实体,使其无法被浏览器解析为代码。这是最关键的防御手段。


内容安全策略(CSP):

通过HTTP头设置规则,限制页面只能加载来自特定来源的脚本,阻止内联脚本和动态代码执行。
HttpOnly Cookie: 为敏感Cookie设置HttpOnly标志,阻止JavaScript访问这些Cookie,减少会话劫持风险。


避免使用innerHTML等危险方法:

尽量使用textContent或innerText来设置文本内容,而不是innerHTML。

CSRF攻击(跨站请求伪造,Cross-Site Request Forgery)

什么是CSRF攻击?

CSRF攻击是指攻击者诱导已登录某个网站的用户的浏览器,向该网站发送一个非预期的请求。由于浏览器会自动携带与该网站相关的身份验证信息(如Cookie),这个伪造的请求会被网站服务器认为是合法用户发起的,从而执行攻击者希望的操作,如转账、修改密码、发表评论等。

核心原理:

CSRF攻击利用了浏览器在发送请求时自动携带同站Cookie的特性。

假设用户A已经登录了银行网站Bank.com。攻击者B创建了一个恶意网站Evil.com。Evil.com中包含一个隐藏的表单或一个指向Bank.com特定操作(如转账)的链接。当用户A访问Evil.com时,如果用户A的浏览器仍然保存着Bank.com的有效Cookie,那么当这个隐藏表单被自动提交或链接被点击时,浏览器会自动将Bank.com的Cookie一起发送给Bank.com服务器。如果Bank.com没有额外的防护措施,它就会认为这是用户A本人发起的合法请求,从而执行转账操作。

主要危害:

执行非预期操作:

攻击者可以诱导用户执行任何网站允许用户通过GET或POST请求执行的操作,只要这些操作不需要用户再次确认或输入额外的验证信息。


财产损失:

最常见的危害是诱导用户进行资金转账。


账户管理:

修改用户密码、邮箱、绑定手机号等。


发布内容:

在社交媒体、论坛等发布恶意信息或广告。

防御措施:

SameSite Cookie:

这是目前最推荐的方法。服务器在设置Cookie时,可以指定SameSite属性为Strict或Lax。Strict表示Cookie仅在同站请求中发送,完全阻止跨站请求携带Cookie;Lax稍微宽松一些,允许在顶级导航时发送Cookie。这能有效阻止大多数CSRF攻击。


CSRF Token(令牌):

网站在生成页面时,向页面中嵌入一个随机生成的、唯一的Token(通常隐藏在表单字段中)。当用户提交表单时,需要将这个Token一起发送给服务器。服务器在处理请求前,会验证这个Token是否有效(即是否与之前生成的Token匹配)。由于攻击者无法获取到这个动态生成的Token,即使他们能构造请求,也无法通过Token验证,从而阻止攻击。这是非常有效的防御手段,尤其适用于不能完全依赖SameSite Cookie的场景。


检查Referer或Origin头:

服务器可以检查HTTP请求头中的Referer或Origin字段,判断请求是否来自预期的来源页面。但这并不可靠,因为Referer头可能被用户禁用或被中间设备修改,且并非所有请求都包含这些头。


要求二次验证:

对于敏感操作(如转账、修改密码),要求用户输入验证码或进行其他形式的二次身份验证,确保操作是由用户本人确认的。


避免使用GET进行敏感操作:

敏感操作应使用POST或其他非安全方法,并配合CSRF Token。

XSS与CSRF的主要区别:

攻击目标不同:

XSS是在用户浏览器中执行恶意代码;CSRF是诱导浏览器以用户身份向目标网站发送请求。


利用方式不同:

XSS是注入并执行脚本;CSRF是利用浏览器自动携带Cookie等凭证。


核心原理不同:

XSS利用了浏览器对网站内容的信任;CSRF利用了浏览器对同站身份验证信息的自动携带。


主要危害不同:

XSS侧重于窃取信息和篡改页面;CSRF侧重于执行非预期的操作。


防御重点不同:

XSS防御重点在于输入输出处理和脚本执行控制;CSRF防御重点在于防止浏览器自动发送请求或验证请求来源。


        如果用比喻的方式去简单理解:XSS是攻击者往你的网站上“种”个恶意程序,等你去看网站时它就运行了;CSRF是攻击者骗你的浏览器帮你网站“下订单”(执行操作),因为你已经登录了。两者都是严重的安全问题,需要网站开发者认真对待和防护。

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

相关文章:

  • TF-IDF算法详解与实践总结
  • 逆向--进阶
  • C++ 标准模板库(STL)详解文档
  • 关于前端常用的部分公共方法(三)
  • 【数字图像处理】基于Python语言的玉米小斑病图像分析
  • 鹰盾加密器“一机一码”技术全维度剖析:从底层实现到生态防护体系
  • 微信小程序抓包(burp + proxifier)
  • 卡方检验(χ²检验)
  • python打卡day50@浙大疏锦行
  • 1.1 ROS1应用商店APT源
  • 全国大学生计算机应用能力与数字素养大赛 C语言程序设计赛项——本科组练习
  • plc开篇学习。
  • maven依赖冲突解决
  • JAVA(Day_2)
  • 5g LDPC编译码-LDPC编码
  • Win系统下的Linux系统——WSL 使用手册
  • Docker安装openGauss
  • 使用kubeadm部署Kubernetes(k8s)集群的步骤
  • Linux ELF文件详解:深入理解可执行文件格式
  • 将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
  • Alpine Linux基本介绍与新手使用指南
  • Spring MVC 核心枢纽:DispatcherServlet 的深度解析与实践价值
  • FastAPI 教程:从入门到实践
  • V837s-调整内核dmesg内容ring buffer大小
  • k8s从入门到放弃之Ingress七层负载
  • 字符串序列判定
  • pip install 安装traj_dist库失败
  • PCB设计教程【大师篇】——STM32开发板原理图设计(单片机最小系统)
  • 树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
  • 智能在线客服平台:数字化时代企业连接用户的 AI 中枢