Web 安全 — XSS 的原理和攻防

简介: Web 安全 — XSS 的原理和攻防

1、XSS 是个啥?

XSS 是跨站脚本攻击 (Cross Site Scripting),为不和层叠样式表 (Cascading Style Sheets, CSS) 的缩写混淆,故将跨站脚本攻击缩写为 XSS。恶意攻击者往 Web 页面里插入恶意 Script 代码,当用户浏览该页之时,嵌入其中 Web 里面的 Script 代码会被执行,从而达到恶意攻击用户的目的。


通俗点说,XSS 就是在一个站点,当我们用户去访问,在渲染 HTML 的过程中,出现了一些没有预期的脚本指令,脚本指令执行时就产生了一个 XSS。XSS 的攻击涉及到三方,分别是攻击者、用户以及 web 服务器,用户通过浏览器访问 web 网页,攻击者会想尽办法在用户访问页面时插入一段脚本,让用户在访问界面的时候就可以执行该脚本,这样攻击者就可以通过插入的执行脚本去获取一些用户的信息(比如说 cookie),并将其发送到攻击者自己的网站,这就是跨站。


ps:在 Vue 中具有一个 v-html 的指令,他就很容易引起这种 XSS 安全问题。

2、XSS 的危害

在真正的应用中,XSS 攻击的危害还是挺多的,比如下面罗列几种:


挂马:

攻击者会通过入侵网站,并将一个木马程序传到一个网站中,使用户在打开网页时木马程序就会运行。


盗取用户 cookie:

在网页浏览中我们常常涉及到用户登录,登录完毕之后服务端会返回一个 cookie 值。这个 cookie 值相当于一个令牌,拿着这张令牌就等同于证明了你是某个用户。

如果你的 cookie 值一旦被窃取,那么攻击者很可能直接利用你的这张令牌不用密码就登录你的账户。如果想要通过script 脚本获得当前页面的 cookie 值,通常会用到 document.cookie。

试想下如果像空间说说中能够写入XSS 攻击语句,那岂不是看了你说说的人的号你都可以登录(不过某些厂商的 cookie 有其他验证措施如:Http-Only 保证同一 cookie 不能被滥用)


劫持流量实现恶意跳转:

比如在网页中想办法插入一句像这样的语句:window.location.href="http://www.baidu.com";

那么所访问的网站就会被跳转到百度的首页,这样百度就会从中获取用户或流量上的一些收益。

导致 XSS 的主要原因是过于信任客户端提交的数据!当然,除了以上几种还有很多其他的危害,由于我本人不是专攻信息安全领域的,所以就没有再做深入了解,如有对这方面感兴趣的同学,

3、XSS 的种类

XSS 主要有两种,分别是: 反射型、存储型,下面分别介绍一下:


反射型(非持久型 XSS):服务端返回脚本,客户端执行

也就是攻击相对于访问者而言是一次性的,具体表现在我们把我们的恶意脚本通过 url 的方式传递给了服务器,而服务器则只是不加处理的把脚本“反射”回访问者的浏览器,而使访问者的浏览器执行相应的脚本。


存储型(持久型 XSS):后端存储了非法脚本,并且前端直接展示

比如留言板功能,恶意用户 A 在在用户 B 的空间留言板留言时,写的是一个含有 XSS 的评论,这个 XSS 脚本就会跟随请求发送到服务器(并存储到服务器上),用户 B 及其他用户在访问 B 的留言板时,服务器就会将恶意用户 A 的评论返回,用户 B 及其他用户一旦查看页面就会执行服务器返回的 XSS 脚本,导致一些安全性的问题。

4、XSS 防范手段

都说知己知彼方能百战不殆,知道了XSS 攻击的原理,那么防御的方法也就显而易见了。防御的主要思想是:


(1)对输入(和 URL 参数)进行 过滤,过滤掉哪些可能会导致脚本执行的相关内容,比如 、<img>、<a> 等标签。

(2)对一些常见的符号,如 <> 进行转换 编码,这样做浏览器是不会对该标签进行解释执行的,同时也不影响显示效果。

(3)对动态输出到页面的内容进行 HTML 编码,让该脚本没有办法在浏览器中执行。

                   

目录
相关文章
|
3天前
|
安全 应用服务中间件 网络安全
实战经验分享:利用免费SSL证书构建安全可靠的Web应用
本文分享了利用免费SSL证书构建安全Web应用的实战经验,涵盖选择合适的证书颁发机构、申请与获取证书、配置Web服务器、优化安全性及实际案例。帮助开发者提升应用安全性,增强用户信任。
|
1月前
|
SQL 负载均衡 安全
安全至上:Web应用防火墙技术深度剖析与实战
【10月更文挑战第29天】在数字化时代,Web应用防火墙(WAF)成为保护Web应用免受攻击的关键技术。本文深入解析WAF的工作原理和核心组件,如Envoy和Coraza,并提供实战指南,涵盖动态加载规则、集成威胁情报、高可用性配置等内容,帮助开发者和安全专家构建更安全的Web环境。
62 1
|
1月前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
91 4
|
1月前
|
安全 Go PHP
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
71 2
|
1月前
|
存储 安全 Go
Web安全基础:防范XSS与CSRF攻击的方法
【10月更文挑战第25天】Web安全是互联网应用开发中的重要环节。本文通过具体案例分析了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的原理及防范方法,包括服务器端数据过滤、使用Content Security Policy (CSP)、添加CSRF令牌等措施,帮助开发者构建更安全的Web应用。
94 3
|
1月前
|
SQL 安全 Go
PHP在Web开发中的安全实践与防范措施###
【10月更文挑战第22天】 本文深入探讨了PHP在Web开发中面临的主要安全挑战,包括SQL注入、XSS攻击、CSRF攻击及文件包含漏洞等,并详细阐述了针对这些风险的有效防范策略。通过具体案例分析,揭示了安全编码的重要性,以及如何结合PHP特性与最佳实践来加固Web应用的安全性。全文旨在为开发者提供实用的安全指南,帮助构建更加安全可靠的PHP Web应用。 ###
41 1
|
2月前
|
Kubernetes 安全 应用服务中间件
动态威胁场景下赋能企业安全,F5推出BIG-IP Next Web应用防火墙
动态威胁场景下赋能企业安全,F5推出BIG-IP Next Web应用防火墙
55 3
|
2月前
|
前端开发 Java API
JAVA Web 服务及底层框架原理
【10月更文挑战第1天】Java Web 服务是基于 Java 编程语言用于开发分布式网络应用程序的一种技术。它通常运行在 Web 服务器上,并通过 HTTP 协议与客户端进行通信。
35 1
|
2月前
|
存储 安全 前端开发
在前端开发中需要考虑的常见web安全问题和攻击原理以及防范措施
在前端开发中需要考虑的常见web安全问题和攻击原理以及防范措施
218 0
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
158 3