我以这种方式创建了一个 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 脚本”
谢谢你。