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. Oracle数据库工程实训笔记

    Oracle的配置 一.配置监听和本地服务名配置 分别是 E:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN 下的这两个文件: 监听配 ...

  2. linux su、sudo、sudo su、sudo -i的用法和区别

    sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码.不过有时间限制,Ubuntu默认一次时长15分钟. su : 切换到某某用户模式,提 ...

  3. tp6微信公众号开发者模式获取access_token

    1:config 文件下新建一个文件wechat.php,将个人id和秘钥写入配置文件 网址: https://developers.weixin.qq.com/doc/offiaccount/Bas ...

  4. 微信小程序授权获取手机号

    wxml: <text>pages/logins/logins.wxml</text> // <button open-type="getPhoneNumber ...

  5. 恢复mysql管理员密码

    1.向mysqld server 发送kill命令关掉mysqld server(不是 kill -9),存放进程ID的文件通常在MYSQL的数据库所在的目录/var/lib/mysql中.# kil ...

  6. Oracle在存储过程中建表、建索引权限不足

    修改存储过程,在存储过程名称后面添加 Authid Current_User 后执行通过. CREATE OR REPLACE PROCEDURE p_test Authid Current_User ...

  7. Colbalt Strike之CHM木马

    一.命令执行(calc)木马生成 1.生成木马 首先创建一个根目录,文件名为exp 在文件夹里创建两个目录和一个index.html文件 在两个目录里分别创建txt文件或html文件 index.ht ...

  8. [Lua游戏AI开发指南] 笔记零 - 框架搭建

    一.图书详情 <Lua游戏AI开发指南>,原作名: Learning Game AI Programming with Lua. 豆瓣:https://book.douban.com/su ...

  9. Linux下使用压力测试工具stress

    一:stress的安装 首先解压安装包到/usr/local/src/下 mv stress-1.0.4.tar.gz /usr/local/src​tar -zxf stress-1.0.4.tar ...

  10. 保姆教程系列二、Nacos实现注册中心

    前言: 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 上篇我们介绍到  保姆教程系列一.Linux搭建Nacos 注册中心原理 一.环境准备 Java版本:1.8+   (Linux ce ...