前端培训-初级阶段 - xss相关(2019-04-18)


思否
前端培训 安全 XSS

转载自 SegmentFault

前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。

这块内容是在会后又加了一节(老板说要处理这块内容)。之前其实就做过一期这样的内容XSS_跨站脚本攻击

我们要讲什么?

  • xss 是什么?

  • 攻击原理是什么?

  • 危害

  • 预防手段是什么?

  • web 安全还有什么是需要注意的

XSS 是什么?

XSS 攻击全称跨站脚本攻击 (Cross Site Scripting),是为不和层叠样式表 (Cascading Style Sheets, CSS) 的缩写混淆,故将跨站脚本攻击缩写为 XSS,XSS 是一种在web应用中的计算机安全漏洞,它允许恶意 web 用户将代码植入到提供给其它用户使用的页面中。

XSS 攻击原理

恶意攻击者往 Web 页面里插入恶意 javascript 代码。当其他用户浏览该页面时,嵌入的代码会被执行,从而达到恶意攻击用户的目的。

XSS 危害

常见于一些私人的博客,攻击者恶意评论,弹出alert,这种充其量也就是一个玩笑。 但是如果是盗窃cookie,异常提交请求,这些就属于危险操作。cookie可以用来伪装成其他用户操作,有可能就会造成财产上的损失。

预防手段

首先我们来分析他攻击方式,在其他用户端执行了一段异常代码,那么我们不执行不就好了吗?

  • 富文本情况,这个可属于重灾区,因为你不确定内容是什么,你还要原样输出。业界方案一般来说是白名单,比如说 <script> 标签都过滤,一些时间都过滤比如<img onerror=,从而达到预防攻击的目的。

服务端直出情况,比如说一些模板引擎啊什么的,我们公司用的是 velocityfreemark。这个位置又分为三个方法

toHtml,首先所有内容都是直出到页面,先经过html解析。这个位置要预防<script>等一些注入的情况

  • toJS,有可能有一些内容是输出在了 script 标签内,这个时候我们要注意他是不是"'</script>等,故意破坏数据的。

  • toURL,这个就是判断存在不存在javascript:alert();的情况了。

页面 innerHTML 或者 write。这个怎么说呢,Vue 或者一些框架是没问题的,因为他们是插槽法,而不是拼接法。

toHtml,主要用于 jquery ,处理一些字符变成实体编码

  • toURL,也是用来判断javascript:alert();的情况

web 安全问题

XSS、CSRF、arp、xff、中间人攻击、运营商劫持、防暴刷

  • CSRF 一般来说就是页面直出一个token,每次请求都带上token。

  • 劫持 https有的时候运营商的劫持还是没办法。

  • 刷,这个略坑。

参考代码

参考文献以及资料

Web安全学习笔记 也是当初在网上找资料发现的。介绍的挺全面的。


原文:SegmentFault

评论

评论功能即将开放。你也可以通过 邮件GitHub Issue 反馈。