通过javascript防止点击劫持攻击

时间:2013-08-12 20:45:47

标签: javascript security clickjacking

点击劫持是人们诱骗用户点击他们不应该使用的按钮,让他们执行恶意行为。

我正在开发一种产品,作为商家的选项,它提供了一个iFrame组件,可以嵌入到网站中进行付款。签名用户将在iframe中看到一个按钮,他们可以单击该按钮执行重要操作。只有在点击确实是他们的时候才会调用此操作。

我使用此代码来防止点击劫持:

if (top == self ||  parent != top ||  document.location.hostname != document.domain) {  top.location.replace("https:\/\/www.mysite.com\/?404");}

有人会闯入我的代码吗?

注意:我不想使用x-frame-option

感谢

1 个答案:

答案 0 :(得分:0)

从iframe中你无法真正控制来自父级的点击,如果他们在Iframe内部点击但另一个事件正在观看,则无法阻止它来自其他域。

但是一切都没有丢失,Iframe本身无法阻止它,但它可以用这样的东西包裹起来。这是假设jquery,可能最好转换为您的应用程序的本机版本,为了显示我将使用jQuery的示例。

<div id="i_wrap"><iframe src="SRC"></iframe></div>
<script>
$('#i_wrap').on('click',function(event){
event.stopPropagation();
});
</script>

当然这不是万灵药,还有办法解决这个问题。您还可以使用新的HTML 5跨文档消息read here on it的一部分进行一些验证,并可能在不安全的网站上警告用户(如果您的iframe没有消息,那么您不显示任何按钮)。

虽然我没有跨文档消息传递方法的经验,但我相信它们可能不允许使用不同的域(尽管可能存在一些方法,但在某种程度上)。

虽然这个问题并不完全清楚,但我可能无法完全理解,如果您更新问题并提供更多详细信息,我会更新我的答案。