繁体   English   中英

防止通过JavaScript进行点击劫持攻击

[英]preventing clickjacking attack by javascript

点击劫持是指人们诱使用户点击他们不应该点击的按钮,从而使他们执行恶意操作。

我正在开发一种产品,作为商家的一种选择,它提供了一个iFrame组件,该组件可以嵌入到网站中进行付款。 登录的用户将在iframe中看到一个按钮,他们可以单击该按钮以执行重要操作。 仅当点击是真正的点击时,才应调用此操作。

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

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

有人可以破解我的代码吗?

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

谢谢

在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跨文档消息传递的一部分进行验证,并可能在不安全的网站上警告用户(如果iframe没有收到消息,则您不会显示任何按钮)。

尽管我没有跨文档消息传递方法的经验,但是我确信它们可能不允许使用不同的域(尽管在某种程度上可以解决这个问题)。

尽管这个问题尚不完全清楚,我可能还不太了解,但是如果您用更多详细信息更新您的问题,我将更新我的答案以适合您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM