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节点内容防御:将<和>两个符号转义成&lt;和&gt;。转义时机有在存入数据库和读取后显示两个时间点进行。

3、HTML属性防御:"引号转义成&quto;,'单引号转义成',空格转义成 ,因为HTML属性可以不加引号,如果不对空格转义,那写代码必须带上引号写属性值。

HTML内容和属性的防御可以合并成一个方法,因为转义的字符都互不影响对应结果。

HTML5之后就没有对&符号进行转义,如果要更加安全就将&符号转义成&amp;

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的更多相关文章

  1. 前端网络安全——前端CSRF

    CSRF:Cross Site Request Forgy(跨站请求伪造) 用户打开另外一个网站,可以对本网站进行操作或攻击.容易产生传播蠕虫. CSRF攻击原理: 1.用户先登录A网站 2.A网站确 ...

  2. 前端安全(XSS、CSRF防御)

    一.网络安全          OWASP:开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)        OWASP是一个开源的 ...

  3. Web前端 Web前端和Web后端的区分

    一.绪论 1. 前台:呈现给用户的视觉和基本的操作. 后台:用户浏览网页时,我们看不见的后台数据跑动.后台包括前端.后端. 前端:对应我们写的html.css.javascript 等网页语言作用在前 ...

  4. 后端把Long类型的数据传给前端,前端可能会出现精度丢失的情况,以及解决方案

    后端把Long类型的数据传给前端,前端可能会出现精度丢失的情况.例如:201511200001725439这样一个Long类型的整数,传给前端后会变成201511200001725440. 解决方法: ...

  5. web标准 浏览器介绍 开发工具介绍 HTML介绍 HTML颜色介绍 规范 HTML结构详解 {前端之前端初识}

    前端之前端初识   前端初识 本节目录 一 web标准 二 浏览器介绍 三 开发工具介绍 四 HTML介绍 五 HTML颜色介绍 六 规范 七 HTML结构详解 一 web标准 web准备介绍: 1. ...

  6. 好程序员web前端分享前端学习路线自学如何找到工作

    好程序员web前端分享前端学习路线自学如何找到工作,自学能不能学会WEB前端并且找到WEB前端开发岗位的工作取决于自身条件,如果基础好,自律性强那么将会容易很多,还有就是自学最难克服的并不是知识点,而 ...

  7. day 41 前端之前端初识

    前端之前端初识   前端初识 本节目录 一 web标准 二 浏览器介绍 三 开发工具介绍 四 HTML介绍 五 HTML颜色介绍 六 规范 七 HTML结构详解 一 web标准 web准备介绍: 1. ...

  8. 微前端 & 微前端实践 & 微前端教程

    微前端 & 微前端实践 & 微前端教程 微前端 micro frontends https://micro-frontends.org/ https://github.com/neul ...

  9. 前端安全之XSS攻击

    XSS(cross-site scripting跨域脚本攻击)攻击是最常见的Web攻击,其重点是“跨域”和“客户端执行”.有人将XSS攻击分为三种,分别是: 1. Reflected XSS(基于反射 ...

随机推荐

  1. k8s-coredns 介绍和部署

    1.k8s-coredns 实现了集群内部通过服务名进行可以访问.添加服务后,会自动添加一条解析记录 cat /etc/resolv.conf nameserver 10.0.0.2 search k ...

  2. C# 字符串、数组和List的截取和转换

    using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...

  3. 前端好用API之getBoundingClientRect

    前情 在前端开发需求中,经常需要获取元素的尺寸位置相关的属性,以往的做法是调用不同api获取相关属性的. getBoundingClientRect介绍 getBoundingClientRect() ...

  4. Ajax的疑难杂种详解

    跨域问题 如图所示,这是通过jquery封装的ajax请求了一个本地的php文件(无框架),console提示CORS策略已阻止"来自来源"的"null":请求 ...

  5. Mybatias

    Mybatis 1.简介 1.1丶什么是Mybaties MyBatis 是一款优秀的持久层框架, 它支持自定义 SQL.存储过程以及高级映射. MyBatis 免除了几乎所有的 JDBC 代码以及设 ...

  6. laravel redis操作大全

    字符串操作 普通得set/get操作,set操作,如果键名存在,则会覆盖原有得值 $redis = app("redis.connection"); $redis->set( ...

  7. LGP6773题解

    阴间状态,出题人是怎么想到的... 为啥lg题解全部都是直接丢状态不说是怎么想的啊.要是以后遇到阴间状态题该怎么想.jpg 首先通过观察,我们可以形象地定义染色:边权为 \(1\) 的边相当于将此边割 ...

  8. VuePress 博客之 SEO 优化(二)重定向

    前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 本篇讲讲 ...

  9. git error: unable to create file Invalid argument

    git error: unable to create file xxxx  Invalid argument 原因: mac  上创建的文件名里有冒号,这在windows 上是不允许的. 解决方式: ...

  10. 简悦+Logseq 搭建本地化个人知识库

    最近在少数派上看到了 简悦 +Logseq 个人知识库搭建 | 从零开始完全指南 - 少数派, 一时间感觉打开了新世界,其实我很早就买了简悦 2.0,但由于一直没有很好的使用场景,外加配置实在过于复杂 ...