2

我以这种方式创建了一个 framekiller 脚本,它只允许在选定的域中构建页面以防止点击劫持。帧杀手代码:

    <style id="antiClickjack">
      body {
           display: none !important;
           }
   </style>

   <script>
    if (top.length > 0)
    {
        if (self.location == top.location) {
            alert("same");
            var antiClickjack = document.getElementById("antiClickjack");
            antiClickjack.parentNode.removeChild(antiClickjack);
        }
        else if (self.location.hostname == top.location.hostname || self.location.hostname.toString() == "www.TrustedSite1.com" || self.location.hostname.toString() == "www.TrustedSite2.com") 
        {  
            var antiClickjack = document.getElementById("antiClickjack");
            antiClickjack.parentNode.removeChild(antiClickjack);
        }
        else 
        {
            top.location.replace(self.location);
        }
    }
    else 
    {            
        var antiClickjack = document.getElementById("antiClickjack");
        antiClickjack.parentNode.removeChild(antiClickjack);
    }

</script>

但是最新的浏览器遵循相同的来源政策,因此它不允许在其他网站(受信任的网站)中执行 framekiller 脚本

我的问题是“如何绕过同源策略在不同域上执行 framekiller 脚本”

谢谢你。

4

0 回答 0