今天看到了XSS漏洞这个词语.于是查了一点相关的资料.
直接总结一下:
XSS的全称是Cross Site Scripting,意思是跨站脚本.
这第一个单词是Cross,为什么缩写成X呢?因为CSS是层叠样式表的缩写(Cascading Style Sheets)的缩写,同时Cross发音和X相似,为了避免混淆用X来代替,缩写成XSS。
触发XSS条件: 完整无错的脚本标记,访问文件的标记属性和触发事件。
1. 先看完整无错的脚本标记
<a href=”http://www.hzw513.com”>我的网站</a> 这个输出当然很正常
而XSS的原理也就是往HTML中注入脚本,HTML指定了脚本标记<script></script>.在没有过滤字符的情况下,只需要保持完整无错的脚本标记即可触发XSS,假如我们在某个资料表单提交内容,表单提交内容就是某个标记属性所赋的值,我们可以构造如下值来闭和标记来构造完整无错的脚本标记,
“><script>alert(’XSS’);</script><”
结果形成了
- <A HREF=”"><script>alert(’XSS’);</script> <”http://www.hzw513.com”></A>
这样一个标记.
这样就可以搞很多事情了..
2.访问文件的标记属性:
<img src=”http://www.hzw513.com/logo.gif”>
<—引用—> img标记并不是真正地把图片给加入到Html文档把两者合二为一,而是通过src属性赋值。那么浏览器的任务就是解释这个img标记,访问src属性所赋的值中的URL地址并输出图片。问题来了!浏览器会不会检测src属性所赋的值呢?答案是否!那么我们就可以在这里大做文章了,接触过javascript的同志应该知道,javascript有一个URL伪协议,可以使用“javascript:”这种协议说明符加上任意的javascript代码,当浏览器装载这样的URL时,便会执行其中的代码.<—/引用—>
把代码构造一下: <img src=”javascript:alert(’XSS’);”>
3. 触发事件:
<—引用—>当然并不是所有标记的属性都能用,细心的你应该发现标记的属性在访问文件才触发的XSS,这里我就不再深入,因为离开标记的属性还有事件能帮助我们触发XSS.那什么是事件呢?只有达到某个条件才会引发事件,正巧img标记有一个可以利用的onerror()事件,当img标记内含有一个onerror()事件而正好图片没有正常输出便会触发这个事件,而事件中可以加入任意的脚本代码,其中的代码也会执行.现在我们又得到了另外一个经典的XSS示例<—/引用—>
<img src=”http://www.hzw513.com/logo.gif” onerror=alert(’XSS’))
——————————————————-
其他方面的就今天就不再说那么多了.
我检查了自己在做的毕业设计,很”高兴”地发现了基本都存在 XSS漏洞.
下面是一些来自网上的关于这个漏洞的建议:
1.对于开发者,首先应该把精力放到对所有用户提交内容进行可靠的输入验证上。这些提交内容包括URL、查询关键字、http头、post数据等。只接受在你所规定长度范围内、采用适当格式、你所希望的字符。阻塞、过滤或者忽略其它的任何东西。
2.保护所有敏感的功能,以防被bots自动化或者被第三方网站所执行。实现session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查。
3.如果你的web应用必须支持用户提供的HTML,那么应用的安全性将受到灾难性的下滑。但是你还是可以做一些事来保护web站点:确认你接收的HTML内容被妥善地格式化,仅包含最小化的、安全的tag(绝对没有JavaScript),去掉任何对远程内容的引用(尤其是样式表和JavaScript)。为了更多的安全,请使用httpOnly的cookie。

