我想通过iframe控件限制我的网站内容在其他域中使用。推荐的元标记即<meta http-equiv="X-Frame-Options" content="deny">
不起作用。我该怎么办?
答案 0 :(得分:1)
您不能仅使用HTTP标头在元标记中设置X-Frame-Options。
在这里阅读更多内容:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
例如,如果您使用的是Apache,则应在.htaccess文件中添加如下所示的行
Header set X-Frame-Options DENY
答案 1 :(得分:0)
避免在元标记中执行此操作。在IIS或应用程序中执行此操作:
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("x-frame-options", "DENY");
}
或
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="DENY" />
</customHeaders>
</httpProtocol>
如果您想允许特定域,请使用allow-from选项而不是拒绝。
此标头可能不适用于旧浏览器,例如Mozilla 3.0,因此您还需要实现客户端验证,名为破坏JS。在此处查看:https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet
答案 2 :(得分:0)
它不起作用。浏览器错误:X-Frame-Options只能通过与文档一起发送的HTTP标头进行设置。可能没有设置在里面。
注意:设置meta标签是没有用的!例如,没有任何作用。不要使用它!只有通过像下面的示例一样通过HTTP标头进行设置,X-Frame-Options才能起作用。
来源Link
配置Apache:
Header set X-Frame-Options "deny"
Header always set X-Frame-Options "sameorigin"
配置nginx:
add_header X-Frame-Options sameorigin always;
配置IIS:
<system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="sameorigin" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
X-Frame-Options 是一种缓解点击劫持攻击的技术。它是服务器发送的HTTP响应标头,用于指示在何种情况下应在框架上下文中显示页面内容。如果标头指令被违反,则了解标头的浏览器将不会显示页面的内容(例如,如果evil-example.com将good-site.com放在iframe中,但是good-site.com发送的标头显示为X-Frame-Options:DENY。因此,不会发生点击劫持,因为无法向受害者显示任何UI元素。 它不提供针对CSRF的保护。了解更多:clickjacking and ..,Security through HTTP response
答案 3 :(得分:0)
如果您需要在响应中添加标头,请考虑在要发送标头时注册回调以执行此操作。
在BeginRequest和发送的响应之间,代码可以完全替换或清除标头集合(尽管如果您自己编写了所有代码,则可能没有)。
在此示例中,我有一些下游代码,有时会添加一个x-frame-options
标头,但会丢失一些HTML页面。因此,代码确保在回调中设置了标头:
protected void Application_BeginRequest()
{
HttpContext.Current.Response.AddOnSendingHeaders(httpContext =>
{
if (isHtmlResponse() && hasNoFrameOptionsHeader())
{
httpContext.Response.AddHeader("x-frame-options", "SAMEORIGIN");
}
bool isHtmlResponse () {
var contentTypeValue = httpContext.Response.Headers["content-type"];
return contentTypeValue is null ? false : contentTypeValue.ToLower().Contains("text/html");
}
bool hasNoFrameOptionsHeader () => httpContext.Response.Headers["x-frame-options"] is null;
});
}
答案 4 :(得分:-1)
您也可以尝试php代码
npm install -D @types/prop-types@ts2.4