前端常见的安全问题

article/2025/11/8 16:26:12

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

通常指通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,获取用户信息、控制用户浏览器等的一种攻击

分类:持久性(存储型xss)

指攻击者通过漏洞将恶意内容写在数据库中,然后当其他用户访问含有这些恶意数据的网页时,就遭受了攻击。攻击位置常常在留言板,阅读列表等。

非持久性( 反射型xss)

把用户输入的数据或者url携带的数据“反射”给浏览器,往往是黑客通过诱使用户点击一个恶意链接从而达到攻击目的

非持久性( Dom型xss)

客户端脚本使用来自用户请求的恶意内容将HTML写入自己的页面 基于DOM的XSS是基于反射XSS的另一种形式。 DOM和'传统'反射XSS之间的区别在于有没有和服务器进行交互。

二、CSRF (Cross-site request forgery) 跨站请求伪造

本质:攻击者利用用户身份操作用户账户的一种攻击方式

原理:

参考上图,完成一次CSRF攻击,必须满足两个条件:

1、用户登录受信任网站A,并且在本地生成Cookie

2、用户在不退出网站A的情况下,访问危险网站B

示例:

1、银行网站A,它以GET请求来完成银行转账的操作,如:    http://www.mybank.com/Transfer.php?toBankId=123&money=1000

2、危险网站B,它里面有一段HTML的代码如下:<img src=http://www.mybank.com/Transfer.php?toBankId=123&money=1000>

3、你登录了银行网站A,然后访问危险网站B,你会发现你的银行账户少了1000块

三、点击劫持(clickJacking)

点击劫持是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。

常见方式:flash劫持,图片覆盖攻击,拖拽劫持,触屏劫持

劫持防御:

1、frame busting :通过js来禁止iframe嵌套,缺点:容易被绕过

2、使用 X-Frame-Options   HTTP 头部 ,有三个值:      

DENY :浏览器拒绝当前页加载任何frame页面      

SAMEORIGIN:只允许加载同源域名下的页面      

ALLOW-FROM:可定义允许frame加载的页面地址

iframe问题所在:

如果iframe中的域名因为过期而被恶意攻击者抢注,或者第三方被黑客攻破,iframe中的内容被替换掉了,从而利用用户浏览器中的安全漏洞下载安装木马、恶意勒索软件等等

防御:       

添加 sanbox属性,最小权限原则 <iframe sandbox src="..."> ... </iframe>

sandbox 提供配置参数

1、allow-forms:允许iframe中提交form表单

2、allow-popups:允许iframe中弹出新的窗口或者标签页(例如,window.open(),   showModalDialog(),target=”_blank”等等)

3、allow-scripts:允许iframe中执行JavaScript

4、allow-same-origin:允许iframe中的网页开启同源策略

四、错误内容推断

产生原因:        

假设通过http请求一个资源,后端通过Content-Type Header建议浏览器按照图片来渲染这次的HTTP响应,但是浏览器过于“智能”,强大的容错能力,发现响应中内容其实是JavaScript,于是就擅自做主把这段响应当做JS脚本来解释执行,安全问题也就产生了。

防御:

通过设置X-Content-Type-Options这个HTTP Header明确禁止浏览器去推断响应类型, 后端服务器返回的Content-Type建议浏览器按照图片进行内容渲染,浏览器发现有X-Content-Type-OptionsHTTP Header的存在,并且其参数值是nosniff,因此不会再去推断内容类型

五、本地存储数据泄露

产生原因:现在很多数据,包括一些敏感信息都存储在前端,如果发生xss等漏洞,这些信息就好被获取

防御:加密,不要存储在前端本地

六、不安全的第三方依赖包

第三方组件、依赖类库等存在安全漏洞 例如:jQuery就存在多个已知安全漏洞,例如jQuery issue 2432,使得应用存在被XSS攻击的可能。而Node.js也有一些已知的安全漏洞,比如CVE-2017-11499,可能导致前端应用受到DoS攻击。 防御:NSP(Node Security Platform),Snyk 工具扫描

七、缺失静态资源完整性校验

产生原因:静态资源存放到CDN,如果CDN被劫持了或者CDN中的资源被污染,那我们的前端应用拿到的就是有问题的JS脚本或者Stylesheet文件。

防御:用浏览器提供的SRI(Subresource Integrity)   <script src=“https://example.js” integrity=“sha384-eivAQsRgJIi2KsTdSnfoEGIRTo25NCAqjNJNZalV63WKX3Y51adIzLT4So1pk5tX”></script>

八、防范措施

1、谨慎用户输入信息,进行输入检查(客户端和服务端同时检查)

2、在变量输出到HTML页面时,都应该进行编码或转义来预防XSS攻击

3、该用验证码的时候一定要添上

4、尽量在重要请求上添加Token参数,注意Token要足够随机,用足够安全的随机数生成算法

5、当有<frame><iframe><object>时,合理设置X-Frame-Options HTTP响应头,添加sanbox属性等

6、检查验证请求来源,对每一个重要的操作都进行重新验证

7、不要将重要文件、备份文件存放在公众可以访问到的地方

8、安全防御的体系是相辅相成、缺一不可的


http://chatgpt.dhexx.cn/article/ytWG4sYo.shtml

相关文章

前端常见安全性问题

文章目录 一、常见的安全性问题二、XXS攻击&#xff08;Cross Site Scripting&#xff09;&#xff08;跨站脚本攻击&#xff09;三、CSRF安全漏洞&#xff08;跨站请求伪造&#xff09;四、文件上传漏洞五、限制URL访问&#xff0c;越权访问六、不安全的加密存储七、SQL注入攻…

前端WEB安全

一、浏览器安全 首先了解前端web安全知识&#xff0c;比不可绕开的基础就是同源策略了&#xff0c;同源策略&#xff08;Same Origin Policy&#xff09;是一种约定&#xff0c;它是浏览器最核心也最基本的安全功能&#xff0c;如果缺少了同源策略&#xff0c;则浏览器的正常功…

前端安全问题以及解决方案汇总

随着大前端的快速发展&#xff0c;各种技术不断更新&#xff0c;前端的安全问题也值得我们重视。今天我们来聊一聊前端常见的7个安全方面问题&#xff1a; 1.iframe 2.opener 3.CSRF&#xff08;跨站请求伪造&#xff09; 4.XSS&#xff08;跨站脚本攻击&#xff09; 5.ClickJa…

浅谈前端安全

1 什么是前端安全&#xff1f; 所有发生在浏览器、单页面应用、Web页面当中的安全问题都算是算是“前端安全问题”。或者就是说所有需要前端开发人员去修复的问题都属于前端安全问题。 2 前端目前存在哪些安全问题 2.1 xss&#xff08;Cross Site Scripting&#xff09;跨站…

数据结构中头结点的作用

数据结构中&#xff0c;在单链表的开始结点之前附设一个类型相同的结点&#xff0c;称之为头结点。头结点的数据域可以不存储任何信息&#xff0c;头结点的指针域存储指向开始结点的指针&#xff08;即第一个元素结点的存储位置&#xff09;。 作用 1、防止单链表是空的而设的…

链表的首元结点、头结点、头指针的区别(图示)

1、首元结点&#xff1a;就是指链表中存储第一个数据元素a1的结点。 2、头结点&#xff1a;它是在首元结点之前附设的一个节点&#xff0c;其指针域指向首元结点。头结点的数据域可以不存储任何信息&#xff0c;也可以存储与数据元素类型的其他附加信息&#xff0c;例如&#…

单链表两种结构:头指针,头结点与首元结点辨析

要区分头指针&#xff0c;头结点&#xff0c;首元结点这几个概念分别指什么&#xff0c;需要结构图来帮助阐释。 我们先来看一种不太严谨的表现形式。 1->2->3->4->NULL 头结点这个名词很具有迷惑性。比如这张图中&#xff0c;刚接触的新手很容易以为1就是来自头…

【头指针,头结点、首元节点】

链表中第一个结点的存储位置叫做头指针&#xff0c;那么整个链表的存取就必须是从头指针开始进行了。之后的每一个结点&#xff0c;其实就是上一个的后继指针指向的位置。 这里有个地方要注意&#xff0c;就是对头指针概念的理解&#xff0c;这个很重要。“链表中第一个结点的存…

单链表:头指针 头结点 首元结点区别与联系

单链表组成&#xff1a;头指针头结点第一个结点第二个结点第三个结点.............第N个结点。 注意下图中&#xff1a;首元结点就是第一个结点。 头指针&#xff1a;作用&#xff1a;1.头指针的名字就是本链表的名字 2.头指针也是一个指针&#xff0c;存放头节点地址 头结…

链表:头结点

简介&#xff1a; 头结点的数据域可以不存储任何信息&#xff0c;头结点的指针域存储指向第一个结点的指针&#xff08;即第一个元素结点的存储位置&#xff09;。头结点的作用是使所有链表&#xff08;包括空表&#xff09;的头指针非空&#xff0c;并使对单链表的插入、删除操…

头指针和头结点

在了解头指针和头结点之前&#xff0c;先介绍数据域、指针域、结点和链表的定义&#xff1a; 数据域用来存储元素的数值数据 指针域存储直接后继节点的存储位置 结点是数据元素的存储映像。由数据域和指针域两部分组成 链表 n个结点由指针链组成一个链表。它是线性表的链式…

关于链表中头指针和头结点的理解

线性表使用顺序&#xff08;数组&#xff09;存储时有个弊端&#xff0c;那就是在插入和删除时需要大量的移动数据&#xff0c;这显示是非常消耗时间的&#xff0c;所以可以采用链式存储&#xff0c;即有一个指针域&#xff08;单链表&#xff09;&#xff0c;来记录下个结点的…

首元结点,头结点,头指针区别

https://www.cnblogs.com/letianpaiai/p/13227755.html 首元结点就是指链表中存储的第一个数据元素的结点&#xff0c;就是结点Li 头指针是指向链表中的第一个结点的指针&#xff0c;如果有头结点&#xff0c;那么头指针所指结点为头结点&#xff0c;否则为首元结点 头结点是…

头指针、头结点、首元结点概念区别

转自&#xff1a;https://blog.csdn.net/liangxingda/article/details/52755800 链表中第一个结点的存储位置叫做头指针&#xff0c;那么整个链表的存取就必须是从头指针开始进行了。之后的每一个结点&#xff0c;其实就是上一个的后继指针指向的位置。 这里有个地方要注意&a…

链表的头节点理解

不管带不带头节点&#xff0c;头指针始终指向第一个结点&#xff0c;头指针始终指向第一个结点&#xff0c;而头节点是带头结点的链表的第一个结点&#xff0c;结点内通常不存储信息。 图示如下&#xff1a; 2.在建立链表时&#xff0c;如果是不带头节点&#xff0c;第一个结…

头结点的作用

数据结构中&#xff0c;在单链表的开始结点之前附设一个类型相同的结点&#xff0c;称之为头结点。头结点的数据域可以不存储任何信息&#xff0c;头结点的指针域存储指向开始结点的指针&#xff08;即第一个元素结点的存储位置&#xff09;。 作用 1、防止单链表是空的而设的&…

头结点和头指针的区别

地址&#xff1a; 头指针和头结点的区别&#xff1a;头指针&#xff1a; 头结点&#xff1a; 地址&#xff1a; https://blog.csdn.net/u013593035/article/details/45953605?ops_request_misc%257B%2522request%255Fid%2522%253A%2522162688192816780255294435%2522%252C%…

链表、头指针、头结点

图1为线性表&#xff08;ZHAO, QIAN, SUN, LI, ZHOU, WU, ZHENG, WANG&#xff09;的逻辑状态。头指针 指示链表中第一个结点&#xff08;即第一个数据元素的存储映像&#xff09;的存储位置。同时&#xff0c;由于最后一个数据元素没有直接后继&#xff0c;则线性链表中最后…

头结点和头指针的详解

文章目录 头结点和头指针的详解1. 什么是结点&#xff1f;2. 链表最后一个元素3. 头结点4. 头指针 头结点和头指针的详解 1. 什么是结点&#xff1f; 为了表示每个数据元素ai与其直接后续元素ai1之间的逻辑关系&#xff0c;对于数据元素ai来说&#xff0c;除了存储其本身的信息…

头指针VS头结点 以及 如何理解头结点

头指针VS头结点 头指针和头结点是两个不同概念。 链表是它们的范畴。 1.头指针是指向链表第一个节点的指针&#xff0c;如果此链表第一个节点是头结点&#xff0c;那么头指针就指向头结点。 2.头结点内通常不储存数据&#xff0c;但不排除例外&#xff0c;有时候可能会储存链…