利用css漏洞进行跨域攻击
#header{
width:72px;background:url("javascript:document.body.onload = function() { 攻击性javascript代码})
}
太变态了, 看到没,只要调用了header样式就能实现跨域攻击了。 其实他是利用在设置background图像的时候,会请求给出的图像地址,这里的图像地址被换成了Javascript代码了,所以在请求的时候会执行这段Javascript代码,所以就能造成跨域攻击了哈。
同理,我觉得<img src=”javascript:document.body.onload = function() { 攻击性javascript代码}” />应该也能达到同等效果哈。
@SuppressWarnings
(
"rawtypes"
)
public
static
boolean
validateRequest(HttpServletRequest request) {
String referer =
""
;
boolean
referer_sign =
true
;
// true 站内提交,验证通过 //false 站外提交,验证失败
Enumeration headerValues = request.getHeaders(
"referer"
);
while
(headerValues.hasMoreElements()) {
referer = (String) headerValues.nextElement();
}
// 判断是否存在请求页面
if
(StringUtils.isBlank(referer)) referer_sign =
false
;
else
{
// 判断请求页面和getRequestURI是否相同
String servername_str = request.getServerName();
if
(StringUtils.isNotBlank(servername_str)) {
int
index =
0
;
if
(StringUtils.indexOf(referer,
"https://"
) ==
0
) {
index =
8
;
}
else
if
(StringUtils.indexOf(referer,
"http://"
) ==
0
) {
index =
7
;
}
if
(referer.length() - index < servername_str.length()) {
// 长度不够
referer_sign =
false
;
}
else
{
// 比较字符串(主机名称)是否相同
String referer_str = referer.substring(index, index + servername_str.length());
if
(!servername_str.equalsIgnoreCase(referer_str)) referer_sign =
false
;
}
}
else
referer_sign =
false
;
}
return
referer_sign;
}