我正在开发一种产品,作为商家的选项,它提供了一个iFrame组件,可以嵌入到网站中进行付款。签名用户将在iframe中看到一个按钮,他们可以单击该按钮执行重要操作。只有在点击确实是他们的时候才会调用此操作。
例如,如果iFrame的不透明度设置为0,则可以将其定位为使iFrame中的按钮不可见,但在不同的可见按钮之上。因此可以欺骗用户点击它。
我认为我有一种防止它的方法,但我不确定它是否足够。以下代码将放在iFrame中:
<script>
function frameVisible() {
var has_dimension = $(frameElement).is(':visible');
var is_visible = $(frameElement).css('visibility') == 'visible';
var is_opaque = $(frameElement).css('opacity') == '1';
var one_deep = (parent == top);
return has_dimension && is_visible && is_opaque && one_deep;
}
if (!frameVisible()) {
$(document.body).hide()
}
</script>
基本上,如果iframe以任何方式被遮挡,iframe内容将被隐藏,从而防止任何意外点击。
我只是想知道这里提供的代码是否有办法。
答案 0 :(得分:0)
这还不够。
攻击者可以将自己的元素放在<iframe>
上方,并为用户点击留出一小段空间,或设置pointer-events: none
以允许用户点击封面。
AFAIK,你无法检测到它。