这是防止点击劫持的充分方法吗?

时间:2013-07-02 02:59:17

标签: javascript clickjacking

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

我正在开发一种产品,作为商家的选项,它提供了一个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内容将被隐藏,从而防止任何意外点击。

我只是想知道这里提供的代码是否有办法。

1 个答案:

答案 0 :(得分:0)

这还不够。

攻击者可以将自己的元素放在<iframe>上方,并为用户点击留出一小段空间,或设置pointer-events: none以允许用户点击封面。

AFAIK,你无法检测到它。