web安全三,XSS攻击

2018-03-01 11:00:48来源:segmentfault作者:MorePainMoreGain人点击

分享

上文说完了CSRF攻击,本文继续研究它的兄弟XSS攻击。


什么是XSS攻击

XSS攻击全名(Cross-Site-Script)跨域脚本攻击,为了跟CSS(Cascading-Style-Sheet)区分开来,所以缩写是XSS。


XSS攻击的原理

上一节说道的CSRF攻击是利用的是“伪请求”,这一节的XSS的原理是利用脚本注入的方式。
主要是依靠一切可能的手段,将浏览器中可以执行的脚本(javascript)植入到页面代码中,从而获取用户cookie甚至账号密码等敏感数据使用户造成的一定的损失。
通常利用的是目标网站的发帖、发布产品等需要用户输入的地方,将脚本混淆到html输入中,上传到服务器,再诱导别的用户打开此页面,执行脚本的一个过程。


XSS攻击的方法

xss漏洞是对web客户端(浏览器)的攻击,所以说植入的代码基本上以javascript和html标签(有时也有结合css样式的xss向量)为主。
一般有四种方法:

页面标签附带脚本
Dom 属性附带脚本
请求地址附带脚本
回车空格突破过滤限制

举两个小李子:


<script>alert('xss')</script><img scr=1 onerror=alert('xss')><a href=javascrip:alert('xss')>s</a><iframe src=javascript:alert('xss');height=0 width=0 /><img src=x onerror=appendChild(createElement('script')).src='js_url' /><img src = “#”/**/onerror = alert(/XSS/)>
<img src = j
ava script :a ler t(/xss/)>
XSS攻击防御的手段

因为XSS的根本就是向网站插入脚本代码,并使它运行的一种手段。防御方法分为两种,服务端防御和客户端防御。
服务端防御:
1. HttpOnly
可以限制javascript不能读取cookie,防止会话ID泄露
2.处理富文本
过滤掉富文本中的敏感标签如(script、iframe、form),还有敏感词(javascript:) 等等
客户端防御:
1. 输入检查
防止输入敏感字段,如javascript、cookie等等
2. 检查输出
脚本都是通过混淆在HTML当中,被当成html代码的一部分才得到执行。
可以通过编码转义的办法,使得混淆在其中的脚本被当成文本处理,不会被执行。
编码转义的话,有三种方法:


*1.HTML encode*
将字符转换成HTMLEntities,一般会转(&、<、>、"、'、/)这6个字符。一般是在html标签属性输出的时候使用
*2.JavaScriptEncode*
使用”/“对特殊字符进行转义。
一般在script标签输出、事件输出、CSS输出
*3.URL Encode*
使用URLEncode的方法。

参考:
XSS的原理分析与解剖
跨站脚本攻击(XSS)——常见网站攻击手段原理与防御
XSS攻击及防御
XSS攻击的解决方法


【相关】
web安全,是一个很重要的技能,也是一个领域的知识。我把这个领域的东西写成了一个系列,以后还会继续完善下去:
web安全一:同源策略与跨域
web安全二:CSRF 攻击
web安全三:XSS 攻击

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台