Множество исследований привело меня к выводу, что JavaScript никак не может проверить, каким будет «следующее местоположение», и сравнить два домена, если window.location
был установлен ИЗ iframe.
Это единственный известный мне способ предотвращения взлома iframe с сайта.Во-первых, вы устанавливаете функцию onbeforeunload
на нормальную работу и предупреждаете пользователя, что он покидает ваш сайт.Тогда - это критическая часть - , вы добавляете код к своим внутренним ссылкам, чтобы запретить изменениям страницы вызывать событие onbeforeunload. Это означает, что событие onbeforeunload
сработает ТОЛЬКО, еслипользователь покидает ваш домен :
(function(){
window.onbeforeunload = function()
{
if( !/\bnagged=true\b/.test( document.cookie ) )
{
document.cookie = "nagged=true";
location.assign('http://www.mysite.com');
return "You are being redirected off our site!";
}
}
var lnk;
for(var i in document.links)
{
if( (lnk = document.links[i] ).href.indexOf( document.domain ) > -1 )
{
lnk.onclick = function()
{
window.onbeforeunload = null;
}
}
}
})();