我们要讲什么?
- 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
。这个位置又分为三个方法
a.toHtml,首先所有内容都是直出到页面,先经过html解析。这个位置要预防<script>
等一些注入的情况
b.toJS,有可能有一些内容是输出在了 script
标签内,这个时候我们要注意他是不是"
、'
、</script>
等,故意破坏数据的。
c.toURL,这个就是判断存在不存在javascript:alert();
的情况了。
3.页面innerHTML
或者write
。这个怎么说呢,Vue 或者一些框架是没问题的,因为他们是插槽法,而不是拼接法。
- toHtml,主要用于
jquery
,处理一些字符变成实体编码 - toURL,也是用来判断
javascript:alert();
的情况
web 安全问题
XSS、CSRF、arp、xff、中间人攻击、运营商劫持、防暴刷
- CSRF 一般来说就是页面直出一个token,每次请求都带上token。
- 劫持 https有的时候运营商的劫持还是没办法。
- 刷,这个略坑。
参考代码
参考文献以及资料
- Web安全学习笔记
也是当初在网上找资料发现的。介绍的挺全面的。