web前端安全性——XSS跨站脚本攻击

前端Web安全主要涉及保护Web应用程序免受恶意攻击和滥用的过程。攻击者可能会利用Web漏洞来窃取敏感信息、执行未经授权的操作或破坏应用程序。作为前端工程师我们应该了解前端攻击的漏洞有哪些,采用什么方法解决。

跨站脚本攻击(XSS)

1、概念

Cross-Site Scripting(跨站脚本攻击)简称XSS,是一种代码注入攻击。攻击者通过在目标网站上注入恶意脚本,在用户的浏览器上运行。**利用这些恶意脚本,攻击者可获取用户的敏感信息如Cookie、SessionlD等,进而危害数据安全。**为了和CSS区分,这里把攻击的第一个字母改成了 X,于是叫做 XSS。XSS一直被认为是web安全中危害较大的漏洞,在owasp的top10排行(OWASP是一个开源的、非盈利的全球性安全组织,致力于应用软件的安全研究)中一直处于前三。

2、原理

(1)在HTML中内嵌的文本中,恶意内容以 script 标签形成注入

//本来要渲染的内容
<div>1</div>
//结果注入了一个script标签
<div><script src="xxxx"></scriptx</div>

(2)在标签属性中,恶意内容包含引号,注入其他属性或者标签

//本来value里面要渲染1
<input value="1">
//恶意代码插入
<input value="1"><script src="xxx"></script>">

(3)在标签的 href、src 等属性中,包含 javascript: 等可执行代码

//本来href里面要染一个跳转地址
<a href="xxx”>跳转</a> 
//结果里面加入了js代码
<a href="javascript:alert(1);">跳转</a> 

(4)在onload、onerror、onclick 等事件中,注入不受控制代码

//本来value里面要渲染1
<input value="1"> //一段恶意代码
<input value="1"/> <img src=# onerror="alert(1)">
1"/> 
<img src=# onerror="alert(1)">

(5)在style属性和标签中,包含类似background-image:url(“javascript:…");的代码
注意: 很多新版本浏览器可以防范

反射性XSS

1、概念

有些情况下用户在请求后台时候,会携带一部分数据。当客户端进行访问某条链接时,攻击者可以将恶意代码植入到URL,如果服务端没有对URL携带的参数做判断或者过滤处理,直接返回响应页面,那么XSS攻击代码就会一起被传输到用户的浏览器,从而触发反射型XSS。
例如,当用户进行搜索时,返回结果通常会包括用户原始的搜索内容,如果攻击者精心构造包含XSS恶意代码的链接,诱导用户点击并成功执行后,用户的信息就可以被窃取,甚至可以模拟用户进行一些操作。

2、反射性特点

反射型XSS不会永久存储用户的数据,仅发生在用户的一次访问过程之后。反射型XSS的触发条件比较苛刻,需要攻击者想方设法引导用户点击链接。

3、反射性解决方案

后端:对搜索的内容进行过滤;白名单处理;对敏感字符进行转义
前端对展示到前端的数据:
用innerText进行处理(不要乱用innerHTML);
转义处理esapeHTML( )(js自带的方法);
白名单处理过滤到非法内容

存储型XSS(持久性)

1、概念

存储型XSS又称持久型XSS,攻击脚本将被永久地存放在目标服务器的数据库或文件中,具有很高的隐蔽性。

2、常见场景

这种攻击多见于论坛、博客和留言板,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入帖子的内容中。随着帖子被服务器存储下来,恶意脚本也永久地被存放在服务器的后端存储器中。

DOM型XSS(不经过服务器)

1、概念

DOM型XSS是基于DOM文档对象模型的一种漏洞。攻击者通过拼接有恶意地址发给受害者,受害者点击后,在用户页面插入隐蔽标签,引入外部is,向攻击者发送受害者的隐私信息。

2、与反射型XSS以及储存型XSS的区别

DOM型XSS没有经过服务器,反射型XSS以及储存型XSS经过了服务器,所以DOM型的XSS需要前端程序员进行优化。

XSS的防范

1、反射型XSS和储存型的XSS是利用完善的后台过滤方式进行预防的。前端在发送数据时无法对这两种类型的XSS进行有效的防护,因为所有的请求都可以拦截伪造。只有在展示数据的时候进行过滤优化。
2、DOM型的XSS是不经过服务器的,所以需要前端程序员进行防护。在使用.innerHTML、.outerHTML、document.write()时要特别小心,不要把不可信的数据作为HTML插到页面上,而应尽量使用.innerText、.textContent、.setAttribute() 等。
DOM中的内联事件监听器,如location、onclick、onerroronload、onmouseover 等,a标签的href属性,img的onerror属性,JavaScript的eval()等,都能把字符串作为代码运行。
3、如果不可信的数据拼接到字符串中传递给这些API,很容易产生安全隐患,请务必避免。

XSS的总结

(1)存储型和反射性的区别:反射性是一次性的,存储型是存储到服务器,它的扩散性危害性更大。防御方式和反射型一样,因为都是要经过服务器,所以大部分还是要靠服务器端解决。前端只能在接收数据后,渲染前进行防护。不管是反射型还是存储型前端都不能在发送前处理,因为前端在发送前的数据都是可以伪造的。
(2)防范存储型和反射型XSS是后端的责任。而 DOM型XSS攻击不发生在后端,是前端的责任。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/698679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Object和Function是函数,函数都有一个prototype属性

Object 和 Function 都是 JavaScript 自带的函数对象 在 JavaScript 中&#xff0c;万物皆对象&#xff0c;你要一个吗&#xff1f;new Object() 啊&#xff01; 当然&#xff0c;就好比同样为人&#xff0c;也区分普通人和天才。 对象也是有分类的&#xff0c;分为 普通对象…

员工离职倾向分析工具

很多公司都担心员工离职&#xff0c;尤其是工龄久的老员工&#xff0c;为什么呢&#xff1f; 很多离职员工带走上家机密&#xff0c;还有的辞职后开公司成为了上家企业的对手公司等等&#xff0c;这类事件非常常见&#xff0c;因此员工离职是一个敏感的话题。 员工离职的原因 …

基于springboot+vue的植物健康系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

C语言作用域2.0

作用域的临时掩盖 如果有多个不同的作用域相互嵌套&#xff0c;那么小范围的作用域会临时 “遮蔽” 大范围的作用域中的同名标识符&#xff0c;被 “遮蔽” 的标识符不会消失&#xff0c;只是临时失去可见性。 示例代码&#xff1a; int a 100;// 函数代码块1 int main(voi…

力扣随笔之两数之和 Ⅱ -输入有序数组(中等167)

思路&#xff1a;在递增数组中找出满足相加之和等于目标数 定义左右两个指针&#xff08;下标&#xff09;从数组两边开始遍历&#xff0c;若左右指针所指数字之和大于目标数&#xff0c;则将右指针自减&#xff0c;若左右指针所指数字之和小于目标数&#xff0c;则左指针自加&…

2.23数据与结构算法学习日记(贪心)

洛谷P1109 学生分组 题目描述 有 n 组学生&#xff0c;给出初始时每组中的学生个数&#xff0c;再给出每组学生人数的上界 R 和下界 L (L≤R)&#xff0c;每次你可以在某组中选出一个学生把他安排到另外一组中&#xff0c;问最少要多少次才可以使 N 组学生的人数都在 [L,R] 中…

大项目中,某个cpp文件读取所在包路径的方法

在一个比较大的C项目中&#xff0c;我们有很多包&#xff0c;每个包都有一个自己的src、include、CMakeLists.txt和其它文件&#xff0c;比如以下文件结构&#xff1a; project- pkg1- datas- data.json- src- xxx1.cpp- include- xxx1.h - CMakeLists.txt- pkg2- src- xxx2.…

为什么vue3内不使用this

在 Vue 3 中&#xff0c;this 的使用受到了限制&#xff0c;主要是因为在 Vue 3 中引入了 Composition API&#xff0c;它提供了一种更灵活、更可组合的方式来组织和管理组件的逻辑。在 Composition API 中&#xff0c;不再使用传统的选项&#xff08;如 data、methods、comput…

前端(vue)数据存储方案

引言 本需求文档旨在明确前端项目中的数据存储需求&#xff0c;包括数据类型、数据结构、数据交互方式等。它定义了前端项目中需要存储和处理的数据&#xff0c;以及对这些数据进行访问和操作的要求。 功能需求 数据存储按数据类型分为 持久存储、内存存储&#xff08;响应式…

AD24-蛇形走线

一、单端蛇形走线 1、公差参数 2、布线-网络等长调节 3、参数说明 ①手工输入绕线的长度 ②参照个网络的长度绕线 ③按照自身设置的规绕线&#xff08;一般选用) 4、调节 5、最后 二、差分蛇形走线 1、布线-差分对网络等长调节 2、如在选中的时候出现问题&#xff0c;按CtrlD…

273.【华为OD机试真题】园区参观路径(动态规划-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-园区参观路径二.解题思路三.题解代码Python题解…

Linux学习方法-框架学习法——Linux应用程序编程框架

配套视频学习链接&#xff1a;https://www.bilibili.com/video/BV1HE411w7by?p4&vd_sourced488bc722b90657aaa06a1e8647eddfc 目录 Linux应用程序编程 Linux应用程序编程 Linux文件I/O(input/output) Linux文件I/O(五种I/O模型) Linux多进程 Linux多线程 网络通信(s…

集合、List、Set、Map、Collections、queue、deque

概述 相同类型的数据进行统一管理操作&#xff0c;使用数据结构、链表结构&#xff0c;二叉树 分类&#xff1a;Collection、Map、Iterator 集合框架 List接口 有序的Collection接口&#xff0c;可以对列表中的每一个元u尿素的插入位置进行精确的控制&#xff0c;用户可以根…

k8s之nodelocaldns与CoreDNS组件

在 Kubernetes 集群中&#xff0c;通常是先通过 NodeLocal DNS Cache 进行域名解析&#xff0c;如果 NodeLocal DNS Cache 没有找到对应的域名解析结果&#xff0c;才会向 CoreDNS 发起请求。在部署层面上看nodelocaldns会在每个节点上运行一个 DNS 缓存服务&#xff0c;而Core…

Qt事件过滤器

1. 事件过滤器 void QObject::installEventFilter(QObject *filterObj) bool eventFilter(QObject *obj, QEvent *event); filterObj表示事件筛选器对象&#xff0c;它接收发送到此QObject对象&#xff08;安装事件过滤器的部件对象&#xff09;的所有事件。筛选器可以停止事件…

SpringCloud-Gateway解决跨域问题

Spring Cloud Gateway是一个基于Spring Framework的微服务网关&#xff0c;用于构建可扩展的分布式系统。在处理跨域问题时&#xff0c;可以通过配置网关来实现跨域资源共享&#xff08;CORS&#xff09;。要解决跨域问题&#xff0c;首先需要在网关的配置文件中添加相关的跨域…

Qt应用软件【协议篇】websocket的介绍和代码示例

WebSocket简介 WebSocket是一种网络通信协议,它使得浏览器(客户端)和服务器之间的通信变得更加高效和实时。这种技术特别适用于需要快速、双向交换数据的应用,比如实时聊天应用、在线游戏、实时股票交易平台等。WebSocket协议在2011年被标准化(RFC 6455),它旨在通过一个…

Spring Boot 常用注解大全

以下是Spring Boot中常用的注解及其详细解释以及相应的代码示例&#xff1a; SpringBootApplication: 这个注解用于标识一个Spring Boot应用的主类。它整合了 Configuration&#xff0c;EnableAutoConfiguration 和 ComponentScan。 SpringBootApplication public class Demo…

(六)激光线扫描-三维重建

本篇文章是《激光线扫描-三维重建》系列的最后一篇。 1. 基础理论 1.1 光平面 在之前光平面标定的文章中,已经提到过了,是指 激光发射器投射出一条线,形成的一个扇形区域平面就是光平面。 三维空间中平面的公式是: A X + B Y + C Z + D = 0 A X+B Y+C Z+D=0

矿产达人小程序修复前端

应用介绍 本文来自&#xff1a;矿产达人小程序修复前端 - 源码1688 矿产达人小程序&#xff1a; 矿产小游戏小程序是一款以矿产资源为主题的休闲娱乐游戏。以下是该小程序的主要功能特点&#xff1a; 游戏画面精美&#xff1a;小程序采用卡通化的设计风格&#xff0c;画面色…