前端网络安全——前端XSS
XSS攻击:Cross Site Scripting(跨站脚本攻击)
XSS攻击原理:程序+数据=结果,如果数据中包含了一部分程序,那么结果就会执行不属于站点的程序。
XSS攻击能干什么?能注入Script标签注入程序,那么所有JS能干的事情攻击者都能干,比如如下一些操作:
1、获取页面数据,偷取网站任意数据
2、获取Cookies,偷取用户资料、偷取用户密码和登录态
3、劫持前端逻辑,欺骗用户
4、发送请求
XSS分类:
1、反射型:url参数直接注入
反射型需要将url发给别人进行传播,别人点开url才能进行攻击,如果要迷惑别人一般会转换成短链,让别人看不出时进行了XSS攻击的url。
2、存储型:存储到数据库后读取时注入
存储型危害更大,因为可以做到用户无感知,而且只要访问过页面的用户都会受到攻击,传播方式更广。
XSS攻击注入点:
1、HTML节点内容
2、HTML属性
3、Javascript代码
4、富文本
XSS防御:
(一)转义手段防御
1、浏览器自带防御机制,将url一些简单的输入进行拦截。只拦截反射型攻击,以及注入在节点和属性中的攻击。
2、HTML节点内容防御:将<和>两个符号转义成<和>。转义时机有在存入数据库和读取后显示两个时间点进行。
3、HTML属性防御:"引号转义成&quto;,'单引号转义成',空格转义成 ,因为HTML属性可以不加引号,如果不对空格转义,那写代码必须带上引号写属性值。
HTML内容和属性的防御可以合并成一个方法,因为转义的字符都互不影响对应结果。
HTML5之后就没有对&符号进行转义,如果要更加安全就将&符号转义成&
4、Javascript代码防御:\\转义成\\\\,”引号转义成\\“,JS需要转义的字符有很多,可以用JSON.stringify()方法来进行字符串转义。
5、富文本防御:
(1)按黑名单过滤不能写入的标签属性,实现简单只需正则表达式进行过滤,弊端是因为html太庞大,容易疏忽造成漏洞。
(2)按白名单保留部分标签和属性,优势是过滤比较彻底,但是实现难度比较大,需要先解析成dom树,然后过滤生成新的内容。而且白名单过滤的属性标签可能会对业务造成一定的影响,需要进行平衡。
npm install xss,这个包是别人写好的xss白名单库。
(二)CSP,Content Security Policy内容安全策略
用于指定哪些内容可执行,通过http-header进行配置可信任的内容。
Content-Security-Policy配置以下属性加对应属性的策略值。
child-src,connect-src,default-src
font-src,frame-src,img-src
manifest-src,media-src,object-src
script-src,style-src,worker-src
前端网络安全——前端XSS的更多相关文章
- 前端网络安全——前端CSRF
CSRF:Cross Site Request Forgy(跨站请求伪造) 用户打开另外一个网站,可以对本网站进行操作或攻击.容易产生传播蠕虫. CSRF攻击原理: 1.用户先登录A网站 2.A网站确 ...
- 前端安全(XSS、CSRF防御)
一.网络安全 OWASP:开放式Web应用程序安全项目(OWASP,Open Web Application Security Project) OWASP是一个开源的 ...
- Web前端 Web前端和Web后端的区分
一.绪论 1. 前台:呈现给用户的视觉和基本的操作. 后台:用户浏览网页时,我们看不见的后台数据跑动.后台包括前端.后端. 前端:对应我们写的html.css.javascript 等网页语言作用在前 ...
- 后端把Long类型的数据传给前端,前端可能会出现精度丢失的情况,以及解决方案
后端把Long类型的数据传给前端,前端可能会出现精度丢失的情况.例如:201511200001725439这样一个Long类型的整数,传给前端后会变成201511200001725440. 解决方法: ...
- web标准 浏览器介绍 开发工具介绍 HTML介绍 HTML颜色介绍 规范 HTML结构详解 {前端之前端初识}
前端之前端初识 前端初识 本节目录 一 web标准 二 浏览器介绍 三 开发工具介绍 四 HTML介绍 五 HTML颜色介绍 六 规范 七 HTML结构详解 一 web标准 web准备介绍: 1. ...
- 好程序员web前端分享前端学习路线自学如何找到工作
好程序员web前端分享前端学习路线自学如何找到工作,自学能不能学会WEB前端并且找到WEB前端开发岗位的工作取决于自身条件,如果基础好,自律性强那么将会容易很多,还有就是自学最难克服的并不是知识点,而 ...
- day 41 前端之前端初识
前端之前端初识 前端初识 本节目录 一 web标准 二 浏览器介绍 三 开发工具介绍 四 HTML介绍 五 HTML颜色介绍 六 规范 七 HTML结构详解 一 web标准 web准备介绍: 1. ...
- 微前端 & 微前端实践 & 微前端教程
微前端 & 微前端实践 & 微前端教程 微前端 micro frontends https://micro-frontends.org/ https://github.com/neul ...
- 前端安全之XSS攻击
XSS(cross-site scripting跨域脚本攻击)攻击是最常见的Web攻击,其重点是“跨域”和“客户端执行”.有人将XSS攻击分为三种,分别是: 1. Reflected XSS(基于反射 ...
随机推荐
- Django的orm(一)
Django的orm一 1.创建表 1.1 创建普通表 class UserType(models.Model): ''' 用户类型 ''' title=models.CharField(max_le ...
- HarmonyOS方舟开发框架容器类API的介绍与使用
作者:liuxin,华为高级工程师 容器类,顾名思义就是存储的类,用于存储各种数据类型的元素,并具备一系列处理数据元素的方法.在方舟开发框架中,容器类采用了类似静态的语言来实现,并通过NAPI框架对外 ...
- Dubbo是什么?核心总结
Dubbo --是SOA架构的具体的实现框架! 2.1 Dubbo简介 Apache Dubbo是一款高性能的Java RPC框架.官网地址:[http://dubbo.apache.org] dub ...
- laravel 框架登录 参考
一.登录功能1.书写登录路由Route::view('login','login');2.书写登录页面 视图层<form action="{{route('loginDo')}}&q ...
- mybatis 基本配置 学习总结01
Mybatis 1.什么是Mybatis Mybatis是一款优秀的持久层框架. 几乎避免了所有JDBC代码和手动设置参数以及获取结果集的过程. Mybatis是一个半自动化的ORM框架(Object ...
- CentOS8时间同步
CentOS8中默认已经不再支持ntpd软件包,同时也无法通过官方软件仓库安装, CentOS8上使用Chrony配置NTP服务器,用于同步时间. 它有两个程序,chrony和chronyd, chr ...
- LGP3702题解
很容易想到容斥,计算不包含质数的方案数和总方案数. 设 \(f[n][i]\) 表示长度为 \(n\) 的序列,每个元素的和对 \(p\) 取模的结果. 容易有 \(f[n][i]=\sum_{j=0 ...
- SAS 数值存储方式和精度问题
本文链接:https://www.cnblogs.com/snoopy1866/p/16021137.html 1 数值存储方式 SAS使用8个字节存储数值,使用浮点计数法表示数值. 浮点计数法由4个 ...
- 逆置单链表(基于c语言)
直接插入全部代码:(reverseLinklist函数是逆置操作) #include <stdio.h> #include <stdlib.h> #include <as ...
- Source Code Reading for Vue 3: How does `hasChanged` work?
Hey, guys! The next generation of Vue has released already. There are not only the brand new composi ...