上文说完了CSRF攻击,本文继续研究它的兄弟XSS攻击。javascript
什么是XSS攻击
XSS攻击的原理
XSS攻击的方法
XSS攻击防护的手段css
XSS攻击全名(Cross-Site-Script)跨域脚本攻击,为了跟CSS(Cascading-Style-Sheet)区分开来,因此缩写是XSS。html
上一节说道的CSRF攻击是利用的是“伪请求”,这一节的XSS的原理是利用脚本注入的方式。
主要是依靠一切可能的手段,将浏览器中能够执行的脚本(javascript)植入到页面代码中,从而获取用户cookie甚至帐号密码等敏感数据使用户形成的必定的损失。
一般利用的是目标网站的发帖、发布产品等须要用户输入的地方,将脚本混淆到html输入中,上传到服务器,再诱导别的用户打开此页面,执行脚本的一个过程。java
xss漏洞是对web客户端(浏览器)的攻击,因此说植入的代码基本上以javascript和html标签(有时也有结合css样式的xss向量)为主。
通常有四种方法:web
举两个小李子:跨域
<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的根本就是向网站插入脚本代码,并使它运行的一种手段。防护方法分为两种,服务端防护和客户端防护。
服务端防护:
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攻击的解决方法服务器