前端安全系列之XSS攻击防范

1、使用textContent

2、使用HTML转义

  • 把JS中的标签转成字符

3、对于链接跳转 禁止含有'javascript:'开头的字符

4、标签属性中含有恶意执行代码 javascript

5、如果用户输入的文本进行过滤很容易照成注入漏洞

6、什么是XSS攻击

  • Cross-Site Scripting(跨站脚本攻击) 为和CSS区分所以叫XSS攻击

7、XSS攻击的本质

  • 而已代码未经过滤,混入正常代码中,浏览器无法分辨,导致恶意代码被执行;

8、在处理输入时,以下内容都不可信

  • 来自用户的 UGC 信息
  • 来自第三方的链接
  • URL 参数
  • POST 参数
  • Referer (可能来自不可信的来源)
  • Cookie (可能来自其他子域注入)

9、XSS分类

  • 根据攻击来源可分为三种: 存储型、反射型、DOM型;

    • 存储型:

      • 攻击者将恶意代码提交到目标网站的数据库中, 用户打开目标网站时,网站服务端将恶意代码从数据库取出,拼接在 HTML 中返回给浏览器;
      • 用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行, 恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作
      • 常见操作带有用户保存数据的网站功能,如论坛发帖、商品评论、用户私信等
    • 反射型:
      • 攻击者构造出特殊的 URL,其中包含恶意代码,用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。
      • 反射型 XSS 跟存储型 XSS 的区别是:存储型 XSS 的恶意代码存在数据库里,反射型 XSS 的恶意代码存在 URL 里
      • 反射型 XSS 漏洞常见于通过 URL 传递参数的功能,如网站搜索、跳转等。
    • DOM 型:
      • 攻击者构造出特殊的 URL,其中包含恶意代码,

        用户打开带有恶意代码的 URL,用户浏览器接收到响应后解析执行,前端 JavaScript 取出 URL 中的恶意代码并执行。
      • DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。

10、XSS攻击预防

  • 包含两大要素

    • 攻击者提交恶意代码。
    • 浏览器执行恶意代码。
  • 两种方式
    • 纯前端渲染(当前主流形式)

      • 浏览器先加载一个静态 HTML,此 HTML 中不包含任何跟业务相关的数据,然后浏览器执行 HTML 中的 JavaScript, JavaScript 通过 Ajax 加载业务数据,调用 DOM API 更新到页面上。
      • 但纯前端渲染还需注意避免 DOM 型 XSS 漏洞;
      • 使用.innerHTML、.outerHTML、document.write()要小心;应尽量使用textContent;如果用 Vue/React 技术栈,并且不使用 v-html、dangerouslySetInnerHTML 功能,就在前端 render 阶段避免 innerHTML、outerHTML 的 XSS 隐患。
    • 转义 HTML
      • Java 工程里,常用的转义库为 org.owasp.encoder;

后记

XSS攻击防范的更多相关文章

  1. 来自内部的XSS攻击的防范

    来自内部的XSS攻击的防范 引入:前面我们分2篇文章分别探讨了来自外部的XSS攻击和来自内部的XSS攻击,现在我们来专门探讨如何防范来自内部的XSS攻击. 实践:其实从 http://www.2cto ...

  2. XSS研究2-来自内部的XSS攻击的防范

    引入: 前面我们分2篇文章分别探讨了来自外部的XSS攻击和来自内部的XSS攻击,现在我们来专门探讨如何防范来自内部的XSS攻击.   实践:  http://www.cnblogs.com/crazy ...

  3. 网络XSS攻击和CSRF攻击原理及防范

    网络XSS攻击和CSRF攻击原理及防范 原文地址:http://www.freebuf.com/articles/web/39234.html 随着Web2.0.社交网络.微博等等一系列新型的互联网产 ...

  4. XSS攻击原理、示例和防范措施

    XSS攻击 XSS(Cross-Site Scripting,跨站脚本)攻击历史悠久,是危害范围非常广的攻击方式. Cross-Site Stripting的缩写本应该是CSS,但是为了避免和Casc ...

  5. XSS 防范XSS 攻击的措施

    XssSniper--0KEE TEAM               XssSniper--0KEE TEAM XssSniper 扩展介绍 一直以来,隐式输出的DomXSS漏洞难以被传统的扫描工具发 ...

  6. xss跨站脚本攻击及xss漏洞防范

    xss跨站脚本攻击(Cross Site Scripting,因与css样式表相似故缩写为XSS).恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Scrip ...

  7. web安全之XSS攻击原理及防范

    阅读目录 一:什么是XSS攻击? 二:反射型XSS 三:存储型XSS 四:DOM-based型XSS 五:SQL注入 六:XSS如何防范? 1. cookie安全策略 2. X-XSS-Protect ...

  8. XSS攻击及防范

    1.什么是XSS攻击 跨站脚本攻击(Cross Site Scripting),攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到 ...

  9. xss攻击与防范

    xss攻击方式以及防范 通常来说,网站一般都是有着,用户注册,用户登录,实名认证等等这些需要用户把信息录入数据库的接口 xss找的就是这种接口,他们可以在传递数据的时候,传递恶意的  script  ...

随机推荐

  1. JS 数据类型与运算符

    以下内容均整理自:廖雪峰老师的JS教程 非常感谢廖老师! 统一使用var声明即可,JS会自动判断类型. 数据类型 1. Number JavaScript不区分整数和浮点数,统一用Number表示,以 ...

  2. 什么是UILabel

    UILabel极其常用,功能比较专一:显示文字 UILabel的常见属性 @property(nonatomic,copy) NSString *text; 显示的文字 @property(nonat ...

  3. JetBrains官博:将从IntelliJ平台移除Log4j的依赖

    今早,DD注意到JetBrains在官方博客发文宣布要将log4j从IntelliJ平台移除了,该变化将在2022.1版本发布. 从博文看,本次移除log4j的漏洞,并非担心log4j2的漏洞问题,因 ...

  4. Fiddler监听Https请求响应

    Fiddler问题 - creation of the root certificate was not successful 解决办法: http://localhost:8888/    安装证书 ...

  5. PHP的加密方法汇总

    PHP的加密主要有4种方法,除此之外还有一种是URL的加密和解密.希望可以对你们开发有用. 顺带,我会在后面把我整理的一整套CSS3,PHP,MYSQL的开发的笔记打包放到百度云,有需要可以直接去百度 ...

  6. Solution -「CF 1372E」Omkar and Last Floor

    \(\mathcal{Description}\)   Link.   给定一个 \(n \times m\) 的矩阵,每行被划分为若干段,你可以钦定每段中恰好一个位置为 \(1\),其余位置为 \( ...

  7. MShadow中的表达式模板

    表达式模板是Eigen.GSL和boost.uBLAS等高性能C++矩阵库的核心技术.本文基于MXNet给出的教程文档来阐述MXNet所依赖的高性能矩阵库MShadow背后的原理. 编写高效的机器学习 ...

  8. python数据结构:链表

    链表与列表.数组这线性结构不同之处在于其在首末两端增删的话比较方便 单链表: 但是链表查找和删除的话都是需要从第一个开始从头查找 因此查找和删除的复杂度都为O(n) 双链表: 相比单链表来说,每个节点 ...

  9. 传统式与自助式BI分析平台有什么区别

    如今自助式BI分析平台已经成为众多企业进行数据分析工作时的首选,究竟自助式BI分析平台在数据分析中有哪些优势,可以受到企业如此的青睐与追捧呢?小编将在本文中,跟大家一起来了解自助式BI分析平台的概念. ...

  10. windev中字符串分隔符的选择以及Contains使用技巧

    字符串分隔符,理论上可以使用任意符号,但作为数据保存,建议只使用以下三种: 1.:分号 2.TAB制表符 3.CR换行符 主要有以下几个原因: 1.组织架构组件,获得的组织路径,使用TAB键分隔,TA ...