前端培训-初级阶段 - xss相关(2019-04-18)
转载自 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=,从而达到预防攻击的目的。
服务端直出情况,比如说一些模板引擎啊什么的,我们公司用的是 velocity和freemark。这个位置又分为三个方法
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