XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞
DOM Based XSS
DOM Based XSS是一种基于网页DOM结构的攻击。
方式:用户请求一个经过专门设计的URL,它由攻击者提交,且其中包含嵌入式JavaScript。服务器的响应中并不以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,上述脚本得以处理Stored XSS
存储型XSS,又称持久型XSS,攻击脚本被永久地存放在目标服务器的数据库和文件中,所以受害人更多。
方式:这种攻击多见于论坛或博客,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入到帖子的内容之中。随着帖子被服务器存储下来,恶意脚本也永久地被存放在服务器的后端存储器中。当其它用户浏览这个被注入了恶意脚本的帖子的时候,恶意脚本则会在他们的浏览器中得到执行,从而受到了攻击- 反射型XSS
反射型XSS,又称非持久型XSS。(一般需要自行去触发,输入—输出)
反射:这种攻击方式的注入代码是从目标服务器通过错误信息、搜索结果等等方式“反射”回来的。
非持久性:这种攻击方式往往具有一次性。
方式:
攻击者通过电子邮件等方式将包含注入脚本的恶意链接发送给受害者,当受害者点击该链接时,注入脚本被传输到目标服务器上,然后服务器将注入脚本“反射”到受害者的浏览器上,从而在该浏览器上执行了这段脚本。
Eg:
攻击者将如下链接发送给受害者:
代码:
http://www.XXXX.com/search.asp?input=<script>alert(document.cookie);</script>
XSS防御
完善的过滤体系
永远不相信用户的输入。需要对用户的输入进行处理,只允许输入合法的值,其它值一概过滤掉。Html encode
假如某些情况下,我们不能对用户数据进行严格的过滤,那我们也需要对标签进行转换。- 使用Apache的commons-lang.jar
StringEscapeUtils.escapeHtml(str);// 汉字会转换成对应的ASCII码,空格不转换