Является ли это достаточным методом для предотвращения кликджекинга?

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 будет скрыто, что предотвратит любые непреднамеренные клики.

Я просто пытаюсь выяснить, есть ли способ обойти приведенный здесь код.


person cilphex    schedule 02.07.2013    source источник
comment
вы можете сделать так, чтобы ваша кнопка требовала двойного щелчка, нажатия клавиши или перетаскивания, или фиктивная капта, где они должны ввести «да», предотвратит все щелчки.   -  person dandavis    schedule 02.07.2013


Ответы (1)


Этого недостаточно.

Злоумышленники могут размещать свои собственные элементы над <iframe> и либо оставлять небольшой зазор, через который пользователь может щелкнуть, либо установить pointer-events: none, чтобы пользователи могли щелкнуть обложку.

AFAIK, у вас нет возможности обнаружить это.

person SLaks    schedule 02.07.2013