我正在开发一种产品,作为商家的选项,它提供了一个iFrame组件,可以嵌入到网站中进行付款。签名用户将在iframe中看到一个按钮,他们可以单击该按钮执行重要操作。只有在点击确实是他们的时候才会调用此操作。
我使用此代码来防止点击劫持:
if (top == self || parent != top || document.location.hostname != document.domain) { top.location.replace("https:\/\/www.mysite.com\/?404");}
有人会闯入我的代码吗?
注意:我不想使用x-frame-option
感谢
答案 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没有消息,那么您不显示任何按钮)。
虽然我没有跨文档消息传递方法的经验,但我相信它们可能不允许使用不同的域(尽管可能存在一些方法,但在某种程度上)。
虽然这个问题并不完全清楚,但我可能无法完全理解,如果您更新问题并提供更多详细信息,我会更新我的答案。