前端安全问题及防范

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

目录

  • XSS攻击
    • 反射型
    • 存储型
    • DOM型
    • 总结
  • CSRF攻击
  • 点击劫持
  • CDN带来的风险
  • 文件上传漏洞
  • 本地存储信息泄露

XSS攻击

XSS(Cross-Site Scripting,跨站脚本),是比较常见的安全漏洞问题,其主要的攻击方式是通过表单或者页面url参数来注入一些可执行的代码,页面中用到这些字段的地方,如果没有经过处理,就会把他们当做代码来执行,从而造成安全事故。

危害:

  1. 盗取token
  2. 盗取账户信息
  3. 恶意软件下载
  4. 键盘下载
  5. 广告引流

根据攻击的影响范围,我们可以分为三类:DOM型、反射型、存储型,下面分别介绍这三种攻击方式。

反射型

程序没有验证用户输入的内容,或者没有过滤url参数直接作为HTML的一部分进行展示,如果内容带有可执行的恶意代码,就构成了反射型xss攻击。

特点:
不会存入数据库,一般都是由用户点击带特定参数的地址才会受到攻击,只能影响到执行脚本的用户。

防范:

  • 从程序员的角度来说,我们需要对一切有赋值页面内容的地方进行参数过滤
  • 从用户的角度上来说,对于陌生的链接,千万不要随意点开,维护网络安全,光靠程序员是没有用的!

存储型

程序通过web请求获取了带有攻击性的内容,在没有检测和过滤的情况下将其存入了数据库,在下一次获取这些数据时候,也没有进行过滤,就展示给了用户。

特点:
因为恶意代码被保存到数据库,所以会持久性攻击用户,只要点开页面的用户都会受到影响

出现位置:

  • 留言板
  • 评论区
  • 用户资料
  • 文章博客

防范:
对于用户的输入进行合理的验证和过滤,如对特殊字符(javascript、

字符转义后的字符
&&
<&lt;
>&gt;
"&quot;
&#x27;
/&#x2F;

DOM型

DOM型攻击指的是在前端页面中,通过url解析参数或者js脚本直接插入到DOM树中。

特点:
不经过后台渲染,可以跳过后台过滤,在只有前端的情况下也可以攻击。

总结

服务端防范
引包解决
在这里插入图片描述
前端防范

  1. 输入检查: 攻击者可能输入XSS的地方
1.页面中所有的input框
2.window.location(href、hash等)
3.window.name
4.document.referrer
5.document.cookie
6.localstorage
7.XMLHttpRequest返回的数据
  1. 输出检查: 触发XSS的地方
1.document.write
2.xxx.innerHTML=
3.xxx.outerHTML=
4.innerHTML.replace
5.document.attachEvent
6.window.attachEvent
7.document.location.replace
8.document.location.assign
  1. 针对Vue项目,可以使用vue-xss对文本进行过滤
npm install vue-xss
// mani.js
var options = {// 默认白名单参考 xss.whiteListwhiteList: {a: ['href', 'style'],img: ['src', 'alt'],...},stripIgnoreTag: true, // 去掉不在白名单上的标签   true:去掉不在白名单上的标签stripIgnoreTagBody: ['script', 'style'] // 去掉不在白名单上的标签及标签体// ['tag1', 'tag2']:仅去掉指定的不在白名单上的标签onTagAttr: function () {// todo},...
}import VueXss from 'vue-xss'
Vue.use(VueXss, options)
<!-- *.vue -->
<div v-html="$xss(content)"></div>
/** *.vue中的js */
this.$xss(content)

CSRF攻击

CSRF(Cross Site Request Forgery, 跨站域请求伪造),通过盗用用户的身份(cookie),发送恶意请求。

危害:
以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账等

攻击流程:
在这里插入图片描述
防范:

  1. 服务端接受数据包能够获取到发送请求的Referer(来源地址),可以通过对Referer值的控制用来加强防御,比如对一些敏感接口,需要判断来源请求必须是某一个指定域才可以;
    在这里插入图片描述

  2. 使用token,放弃cookie。因为CSRF成功的原因在于站点对于用户身份的辨别依赖于cookie,因此攻击者可以再不知道用户口令的情况下直接使用用户的cookie来通过验证。如果我们通过登录的方式来让后台随机生成一个token,每次发送请求的时候都携带这个token,后台进行校验,如果token不存在或者token验证失败,就拒绝访问。
    但是token同样会有泄露的风险,所以通常情况下,我们会采用方法1+方法2结合的方法来进行防御,或者通过token中存入当前用户的ip和代理来防御。

点击劫持

点击劫持 (Clickjacking) 技术又称为界面伪装攻击 (UI redress attack ),是一种视觉上的欺骗手段。攻击者使用一个或多个透明的 iframe 覆盖在一个正常的网页上,然后诱使用户在该网页上进行操作,当用户在不知情的情况下点击透明的 iframe 页面时,用户的操作已经被劫持到攻击者事先设计好的恶意按钮或链接上。攻击者既可以通过点击劫持设计一个独立的恶意网站,执行钓鱼攻击等;也可以与 XSS攻击相结合,突破传统的防御措施,提升漏洞的危害程度。
在这里插入图片描述

防范:

  1. 服务端设置X-FRAME-OPTIONS 机制,该机制有两个选项:DENY 和 SAMEORIGIN。DENY表示任何网页都不能使用 iframe 载入该网页,SAMEORIGIN表示符合同源策略的网页可以使用 iframe载入该网页。如果浏览器使用了这个安全机制,在网站发现可疑行为时,会提示用户正在浏览 网页存在安全隐患,并建议用户在新窗口中打开。这样攻击者就无法通过 iframe 隐藏目标的网页。
  2. 对于重要的接口,多设计验证码,这样能够防止点击一下就进行操作的风险。
    扩展
    对于iframe,除了点击劫持的风险外,还有可能出现这样的情况:我们的页面中引入iframe加载第三方网站,因为iframe里的东西不受我们控制,如果这个网站已经被人黑了,很有可能就会对我们造成影响。
    为了避免这类操作,我们尽量少用iframe加载内容,如果确定有必要,请控制好iframe的权限:给iframe添加sandbox属性,配置我们需要的最小权限
  • allow-forms:允许iframe中提交form表单
  • allow-popups:允许iframe中弹出新的窗口或者标签页(例如,window.open(),showModalDialog(),target=”_blank”等等)
  • allow-scripts:允许iframe中执行JavaScript
  • allow-same-origin:允许iframe中的网页开启同源策略4

CDN带来的风险

项目中使用cdn加载静态资源虽然能够提升加载性能,但是这些静态资源也有可能被污染,从而我们加载并执行了攻击者想让我们执行的内容。

防范:
为了避免这些,我们尽量不使用cdn,或者是在使用前对资源的安全性进行验证

文件上传漏洞

文件上传漏洞是指攻击者跳过文件校验,上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。

防范:

  • 前后端都要严格控制上传文件的类型;
  • 在上传时按照一定规则对文件重命名;
  • 在服务器上对放置文件的目录设置为不可执行

本地存储信息泄露

平常写代码的时候,我们经常会往localStorage或sessionStorage中存一些内容,如果未经考虑,将前端加密公钥、用户密码等关键信息保存到这里,就很有可能导致信息泄露,给攻击者营造机会。

防范:
敏感信息不要保存到localStorage、sessionStorage中,如果涉及到一些必须保存的内容,请一定要加密处理。


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

相关文章

前端安全之csp

最近前端项目被白帽子使用appscan扫到安全漏洞,老大勒令我们抓紧修复,我们先来看两个级别比较低的漏洞 看到这儿对于我个渣渣前端来说是懵逼的,难道我设置一下http header 就ok了 简单来介绍下什么叫做csp内容安全策略 (CSP) 是一个额外的安全层,用于检测并削弱某些特定类型…

Web前端安全系列之:XSS攻防及Vue防御(万字长文)

关注公众号 笑果杂谈 前言 Web 安全的兴起 Web 攻击技术的发展也可以分为几个阶段。在 Web 1.0 时代&#xff0c;人们更多的是关注服务器端 动态脚本的安全问题&#xff0c;比如将一个可执行脚本&#xff08;俗称 webshell&#xff09;上传到服务器上&#xff0c;从而获得权…

前端安全:CSRF、XSS该怎么防御?

近几年随着业务的不断发展&#xff0c;前端随之面临很多安全挑战。我们在日常开发中也需要不断预防和修复安全漏洞。接下来&#xff0c;梳理一些场景的前端安全问题和对应的解决方案。 XSS攻击介绍 XSS是后端的责任&#xff0c;后端应该在用户提交数据的接口对隐私敏感的数据…

如何解决Web前端安全问题?

我国网络技术水平的提升&#xff0c;带动着WEB前端业务量的显著增长&#xff0c;人们对于网络服务的需求也日益复杂&#xff0c;与此同时&#xff0c;越来越多的黑客出现&#xff0c;其攻击水平也有了明显提升&#xff0c;WEB前端也成为了众多黑客进行网络攻击的主要目标。 因…

前端安全问题的解决方法

目录 前言&#xff1a; 1.常见的安全性问题 2.XSS攻击的解释和解决方法 2.1 XSS攻击是什么&#xff1a; 2.2 经常出现的原因&#xff1a;用户输入&#xff0c;如input框 2.3 防御方式&#xff1a; 3.CSRF&#xff08;跨站请求伪造&#xff09;的解释和解决方法 3.1 是什么…

前端常见的安全问题

一、XSS &#xff08;Cross-Site Scripting&#xff09;跨站脚本攻击 通常指通过“HTML注入”篡改了网页&#xff0c;插入了恶意的脚本&#xff0c;从而在用户浏览网页时&#xff0c;获取用户信息、控制用户浏览器等的一种攻击 分类&#xff1a;持久性&#xff08;存储型xss&…

前端常见安全性问题

文章目录 一、常见的安全性问题二、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…