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