前端最基础的就是 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();
的情况了。
- toHtml,首先所有内容都是直出到页面,先经过html解析。这个位置要预防
-
页面
innerHTML
或者write
。这个怎么说呢,Vue 或者一些框架是没问题的,因为他们是插槽法,而不是拼接法。- toHtml,主要用于
jquery
,处理一些字符变成实体编码 - toURL,也是用来判断
javascript:alert();
的情况
- toHtml,主要用于
web 安全问题
XSS、CSRF、arp、xff、中间人攻击、运营商劫持、防暴刷
- CSRF 一般来说就是页面直出一个token,每次请求都带上token。
- 劫持 https有的时候运营商的劫持还是没办法。
- 刷,这个略坑。
参考代码
参考文献以及资料
-
Web安全学习笔记
也是当初在网上找资料发现的。介绍的挺全面的。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。