2016-04-04 95 views
0

我有一个易受点击劫持漏洞攻击的网站。做一些研究,看起来像一个简单的方法是简单地将X-Frame-Options: SAMEORIGIN添加到响应头。这是一个非常古老的Web应用程序(大约上次更新时间为2004年),并使用ASP.NET 2.0运行IIS 6。将自定义响应标题添加到web.config

在新版本中,我可以简单地添加以下部分到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就足够了吗?

回答

0

我不相信你可以通过更新web.config来达到这个目的,因为你的目标是II6(因为在IIS7 +中增加了对<customHeaders>部分的支持)。

什么,你可能会需要做的是创建类似于this blog post提到的方法,将实际处理添加页眉这可能会是这个样子的自定义HTTP模块:

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> 
+0

是否有任何理由使用自定义模块,而不是我将它添加到Global.asax文件的第二种方法?我喜欢定制模块的想法,只是好奇是否有理由使用其中一个。 – Zymus

+0

其实,我没有注意到这段代码。是的,尽管您可能想要定位['Application_PreSendRequestHeaders'](https://msdn.microsoft.com/en-us/library/system.web.httpapplication.presendrequestheaders(v = vs。 110).aspx)事件,因为它可能是一个更好的时间添加标题。 –

相关问题