2016-12-16 126 views
2

我试图在另一个站点尝试iframe我的网站时显示错误消息。我使用的.htaccess:在框中显示消息.htaccess

Header set X-Frame-Options DENY

然而,这仅仅是创建一个空白页,而iframe中。是否可以显示错误消息,而不是只是一个空白的屏幕?

更新

寻找任何JavaScript解决方案

+0

如果你不找JavaScript的解决方案你或许应该删除javascript标签。 –

+0

@ SeanWessell-好点,我忘了我有! – Zackh105

+0

你应该看看SO使用的大片。尝试从SO构建一个页面,看看会发生什么 – 2016-12-23 12:55:26

回答

0

HTML

<!DOCTYPE html> 

<html lang=en> 
    <head> 
     <title>Blocking iFrame with JS</title> 
    </head> 
    <body> 
     <p>page content</p> 

     <script src='iframe/blocker.js'></script> 
    </body> 
</html> 

JS

if (window.top !== window.self) window.top.location.replace(window.self.location.href); 

注:这JS代码重定向到父页面(iframe的位置坐) - 当然,你也可以使用covener的解决方案,他的解决你的问题很有意思:)

为什么它是坏的,如果你的页面是在源页面上“的iframe”

要求

更多信息:启用JavaScript

缺点:我不会推荐,因为攻击者拥有所有你做同样的工具,他们可以使用沙箱,以防止你运行的JavaScript或重定向窗口

来源: https://www.tinfoilsecurity.com/blog/protect-your-website-from-embedded-content-iframe-security

0

您可以使用mod_rewrite或<if>来检查引用链接(它是iframe中的封闭页面)并将站点的整个部分重定向到静态文件。

这里有许多可能的首发食谱对证接受引荐域的列表中的一个:!

RewriteEngine叙述ON 的RewriteCond%{REQUEST_URI} iframe_err.html 的RewriteCond%{HTTP_REFERER} ^($ | HTTP [ s]://(www。)?mydomain.com) RewriteRule。* /iframe_err.html

1

iframes由浏览器处理。

客户端决定是否显示iframe的内容以及是否兑现SAMEORIGIN选项。

即使使用.htaccess,服务器也不知道整个页面的页面请求之间的差异,例如某人直接访问页面或从iframe访问页面。

你可以做的是检查HTTP_REFERER。检查这个样本我还没有测试过,但想法是阻止页面从您自己的网站以外的任何地方访问。

RewriteEngine On 

RewriteCond %{QUERY_STRING} !^id=[^&]+ [NC] 
RewriteCond %{HTTP_REFERER} !^http://your-website.com 
# then redirect to a different page 
RewriteRule !^start start [L,NC,R=302] 

但正如我前面提到的HTTP_REFERER它不是100%可靠的解决方案,可以被欺骗。但是,互联网上的任何事情都不是100%可靠的。