我知道框架比Iframes要实现更多的打字工作,并且它们需要比Iframe更多的样式.我目前正在开发一个网站,该网站必须从其他网站下载一些内容(实际上是一整套网页),当然这取决于用户在主网站上的操作.iframe似乎是实现这一要求的一种简短而粗暴的方式,但我担心的是性能和完整性.
当满足以下条件时,我想就我更愿意使用的内容提出一些建议:
一个奇迹男人的想法?
我有以下代码来检查网页是否可以被框架化:
var req = new XMLHttpRequest();
var test = req.open('GET', link, false);
console.log("test",test); //ALWAYS undefined
if(req.send(null)){ //ALWAYS throws error NS_ERROR_FAILURE
var headers = req.getAllResponseHeaders().toLowerCase();
console.log("headers");
}else{
console.log("FAILED");
}
Run Code Online (Sandbox Code Playgroud)
我用几个链接测试它,可以框架或不框架,但总是失败.你知道为什么吗?
链接:
添加X-Frame-Options DENY到响应头有助于防止网页的恶意框架,作为一种解决方案,它肯定比客户端JavaScript解决方案更好.
但它有多有用呢?所有(现代)浏览器都支持它,是否可以被劫持您网站的黑客绕过?
一些smartass人正在使用我的以api为中心的Web应用程序来克隆我的服务并使其看起来像他们自己的.有没有办法确保所有的ajax请求都来自我的网站?
当然我可以使用引用者标题,但他们可以很容易地伪造它.
我明白没有办法杀死iframe断路器......但是,我想知道,有没有办法优雅地处理它.
到目前为止,我设法在退出之前检测它,使用<body onunload="function();">.我想知道是否可以阻止它加载iframe或强制它在新窗口中打开等.
干杯,米奇
if(window.top!==window.self){document.write="";
window.top.location=window.self.location;
setTimeout(function(){document.body.innerHTML=""},1);
window.self.onload=function(){document.body.innerHTML=""}};
Run Code Online (Sandbox Code Playgroud)
这是确保页面不会在 iframe 内呈现吗?
在我们的大多数页面上都有这行代码,我正在试图找出它的用途以及是否可以删除它.
它看起来像这样:
<script type="text/javascript">
/*<![CDATA[*/
if(top!=self){top.location.replace(self.location.href);}
/*]]>*/
</script>
Run Code Online (Sandbox Code Playgroud)
我知道这可能是一个愚蠢的问题,但是这个剧本试图说的是什么.这可能与登录功能有关吗?
提前致谢
if(self!=top){ window.open(self.location,'_top'); }
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下吗?
编辑
分别是什么意思self!=top和window.open(self.location,'_top')意思?
我正在寻找一个描述如何实现一个工作框架破坏者的指南,该框架也可以处理在浏览器中没有激活JS的人.
我读了这个非常好的问题,但我对"不要自己动手"或"也许试试......"这样的建议完全不感兴趣.我想看一篇论文,一步一步指导解释每一个"为什么"(没有可能和没有猜测).学术论文首选.
任何人都可以发布链接到这样做的事实上的圣杯纸吗?
谢谢,
所以我想要的是这样做:
if (top != self) {
top.location = self.location;
}
Run Code Online (Sandbox Code Playgroud)
在self.location; 改变事件.(如果真的需要可以使用Jquery但我不喜欢)是否可能以及如何做这样的事情?
主要想法是将所有弹出窗口保持在最顶层.在这里,我们尝试修改窗口代码,以便当用户在主页面上单击以打开新窗口时它会进入顶部.所以Ifigured我们将订阅并听取self.location改变事件.我想知道怎么做?
正如我在主题中已经提到的,我有一个MVC站点,我需要禁用将其加载到IFrame中.
我已经创建了用于测试目的的简单页面,我尝试加载到我的网站和Google.com的两个IFrame中.我可以看到我的网站已加载但谷歌不是.这意味着我需要在我的MVC网站中更改某些内容.
<!DOCTYPE html>
<html>
<body>
<iframe src="http://localhost:61831/" width="1200" height="800">
<p>Your browser does not support iframes.</p>
</iframe>
<iframe src="http://google.com" width="1200" height="800">
<p>Your browser does not support iframes.</p>
</iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
那么在MVC网站中我必须写什么以及在哪里实现呢?
如何阻止我的网站加载到框架中?
从这里可以看到:http: //yehg.net/lab/pr0js/pentest/cross_site_framing.php
谷歌将无法加载,msn.com将突破框架.AOL.com将加载罚款.如何让我的网站突破框架或加载整个窗口?
javascript ×10
iframe ×6
jquery ×4
html ×3
security ×2
ajax ×1
asp.net ×1
asp.net-mvc ×1
events ×1
http-headers ×1
xss ×1