添加自定义响应 header 到 web.config
Add custom response header to web.config
我的网站容易受到点击劫持漏洞的影响。做一些研究,看起来简单的方法之一是简单地将 X-Frame-Options: SAMEORIGIN
添加到响应 header。这是一个非常古老的 Web 应用程序(大约上次更新是 2004 年),并且是 运行 IIS 6 with ASP.NET 2.0.
在较新的版本中,我可以简单地将以下部分添加到 web.config
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
</system.webServer>
到此为止。但是,我似乎无法验证这是否可以使用 IIS 6。
IIS 6 和 ASP.NET 2.0 是否可以只在 web.config
文件中完成?如果是这样,如何?如果不是,我必须进行哪些代码更改才能获得相同的结果?只需添加
Context.Response.AddHeader("X-Frame-Options", "SAMEORIGIN");
到Global.asax#Application_EndRequest
够了吗?
我认为您无法仅通过更新 web.config
来完成此操作,因为您的目标是 II6(因为 IIS7+ 中添加了对 <customHeaders>
部分的支持)。
您可能需要做的是创建一个类似于 this blog post 中提到的方法的自定义 HttpModule,该方法将处理实际添加的 Header,它可能看起来像这样:
public class SameOriginHeaderModule : IHttpModule
{
private HttpApplication _application;
public void Init(HttpApplication context)
{
_application = context;
context.PreSendRequestHeaders += OnPreSendRequestHeaders;
}
void context_EndRequest(object sender, EventArgs e)
{
// If your request exists, add the header
if (_application.Context != null)
{
var response = _application.Response;
response.Headers.Add("X-Frame-Options", "SAMEORIGIN");
}
}
public void Dispose()
{
}
}
然后您需要在 web.config
文件中注册此模块,如下所示:
<configuration>
<system.web>
<httpModules>
<add name="SameOriginHeaderModule" type="SameOriginHeaderModule" />
</httpModules>
</system.web>
</configuration>
我的网站容易受到点击劫持漏洞的影响。做一些研究,看起来简单的方法之一是简单地将 X-Frame-Options: SAMEORIGIN
添加到响应 header。这是一个非常古老的 Web 应用程序(大约上次更新是 2004 年),并且是 运行 IIS 6 with ASP.NET 2.0.
在较新的版本中,我可以简单地将以下部分添加到 web.config
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
</system.webServer>
到此为止。但是,我似乎无法验证这是否可以使用 IIS 6。
IIS 6 和 ASP.NET 2.0 是否可以只在 web.config
文件中完成?如果是这样,如何?如果不是,我必须进行哪些代码更改才能获得相同的结果?只需添加
Context.Response.AddHeader("X-Frame-Options", "SAMEORIGIN");
到Global.asax#Application_EndRequest
够了吗?
我认为您无法仅通过更新 web.config
来完成此操作,因为您的目标是 II6(因为 IIS7+ 中添加了对 <customHeaders>
部分的支持)。
您可能需要做的是创建一个类似于 this blog post 中提到的方法的自定义 HttpModule,该方法将处理实际添加的 Header,它可能看起来像这样:
public class SameOriginHeaderModule : IHttpModule
{
private HttpApplication _application;
public void Init(HttpApplication context)
{
_application = context;
context.PreSendRequestHeaders += OnPreSendRequestHeaders;
}
void context_EndRequest(object sender, EventArgs e)
{
// If your request exists, add the header
if (_application.Context != null)
{
var response = _application.Response;
response.Headers.Add("X-Frame-Options", "SAMEORIGIN");
}
}
public void Dispose()
{
}
}
然后您需要在 web.config
文件中注册此模块,如下所示:
<configuration>
<system.web>
<httpModules>
<add name="SameOriginHeaderModule" type="SameOriginHeaderModule" />
</httpModules>
</system.web>
</configuration>