前言
XSS又称CSS,全称Cross SiteScript,即跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如盗取用户Cookie、破坏页面结构、重定向到其它网站等。
XSS攻击类型
XSS的攻击类型分为两种:存储型和反射型。
反射型攻击
访问地址:
http://www.pandan.xyz/login.jsp?from=<script>alert('XSS反射型攻击')</script>
login.jsp/login.php等
<html>
<%
String from = request.getParameter("from");
request.setAttribute("from",from);
%>
<input value=${from}></input>
</html>以上地址当login.jsp或login.php等页面中有用到访问地址中传入的from参数,又没有对其进行转义处理时,浏览器解析到input标签中的value属性时,就会立即触发恶意脚本的执行,引发安全问题。
存储型攻击
存储型攻击是指像论坛发帖,恶意用户在论坛发帖时,输入恶意js代码。如果服务端没有对用户输入的内容进行转义及过滤处理的话,会将含恶意脚本的评论存入数据库中,当正常用户浏览该帖子时,就会触发恶意脚本的执行,引发一系列安全问题。所以,存储型攻击的特点是恶意脚本会存储到数据库中,在正常用户加载该信息时触发攻击,多出现在论坛,贴吧等公共评论的网站中。
XSS带来的危害
- 获取浏览器cookie中保存的会话Id,劫持session,模拟用户访问;
- 在用户访问的网络页面上植入钓鱼链接,诱使用户点击,进而触发CSRF跨站点请求伪造,或者是跳到非法页面,诱使用户输入敏感信息等;
- 破坏页面结构,在页面植入非法广告等;
- ……
如何防范XSS攻击
- 设置cookie为HttpOnly,禁止js读取cookie信息;
- 对用户传入的参数,以及url地址中的参数进行转义或过滤处理;
/** |