关于XSS的一些知识点
安全套接层(SSL)无助于减少XSS攻击。当Web浏览器使用SSL的时候,在网络中传送的数据是经过加密的,但是因为XSS攻击是在客户机器上发生的,所以数据已经被解密了,这时,攻击者仍然能够利用XSS安全漏洞来访问解密后的数据。
XSS攻击中的一些常用数据域:
URL/query字符串:攻击者能够在URL/query字符串中存储数据,并且通过控制用户访问指定的链接来使受害者发送这些数据给Web服务器。攻击者能够利用持久性XSS攻击的URL来发送脚本。
POST data:对于反射性XSS,攻击者能够处理他们的表单并强制受害者提交表单数据(脚本)。对于持久性XSS,攻击者只需简单地提交表单即可。
User-Agent:如果攻击者不能够在受害者机器上进行设置,那么User-Agent头和其他的HTTP头就不适合反射XSS攻击。但是可以持久性XSS。Web浏览器不允许网页设置User-Agent字符串,因此,攻击者不能为受害者设置它。
Referer:Referer域对于攻击来说好像很难利用,因为在请求服务器或者文件名的时候,类似于尖括号这样的字符被认为是非法的。然而,攻击者可以使用多种方式来使脚本运行,这些方法包括:在文件名中使用允许的字符;添加一个包含脚本数据的查询字符串;或者在DNS的服务器名字中使用尖括号。
深入理解浏览器中的解析器:在<script>和</script>之间的任何东西都会被当作脚本,并对它们进行语法检查。
<script>
var strMyVar = '</script><script>alert('快船总冠军')</script>';
...
</script>
浏览器会把上述内容解释为两个<script>块,第一个块有语法错误,并且不会运行。但是第二个块语法正确会运行。