2016-04-04 38 views
0

Tıklama tehlikesine karşı duyarlı bir web sitem var. Bazı araştırmalar yapmak, basit yaklaşımlardan birinin yanıt başlığına X-Frame-Options: SAMEORIGIN eklemesini sağlamaktır. Bu çok eski bir web uygulamasıdır (yaklaşık son güncelleme 2004'tür) ve IIS 6'yı ASP.NET 2.0 ile çalıştırmaktadır.Özel yanıt üstbilgisini web.config dosyasına ekleyin

yeni sürümlerinde, ben sadece web.config

<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
      <add name="X-Frame-Options" value="SAMEORIGIN" /> 
     </customHeaders> 
    </httpProtocol> 
</system.webServer> 

için aşağıdaki parça ekleyip Ve bunun sonu olurdu. Ancak, bunun IIS 6 kullanılarak mümkün olduğunu doğrulayamıyorum. IIS 6 ve ASP.NET 2.0 ile bu yalnızca web.config dosyasında yapılabilir mi? Öyleyse nasıl? Değilse, aynı sonucu elde etmek için hangi kod değişikliklerini yapmak zorundayım? basitçe Global.asax#Application_EndRequest için

Context.Response.AddHeader("X-Frame-Options", "SAMEORIGIN"); 

yeterli ekleyerek misiniz?

cevap

0

Bunu, yalnızca II6'yı hedeflediğinizden (<customHeaders> bölümü IIS7 + 'ya eklendiğinden) web.config numaralı güncelleştirmeyi güncelleyerek gerçekleştirebileceğinize inanmıyorum.

böyle bir şey görünebilir hangi Başlığını ekleyerek aslında bakacaklarını this blog post belirtilen yaklaşıma benzer bir özel HttpModule'ü oluşturmak olacaktır yapmanız gereken muhtemel hangi: Bu durumda, gerekir

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() 
    { 

    } 
} 

<configuration> 
    <system.web> 
     <httpModules> 
      <add name="SameOriginHeaderModule" type="SameOriginHeaderModule" /> 
     </httpModules> 
    </system.web> 
</configuration> 
+0

herhangi özel bir modülü kullanmak için sebep yerine Global.asax dosyasına eklemeden benim ikinci yaklaşım var mı: aşağıda görüldüğü gibi web.config dosya içinde bu modülü kayıt? Özel modül fikrini beğendim, sadece diğerini kullanmak için bir sebep olup olmadığını merak ediyorum. – Zymus

+0

Aslında, bu kod parçasını fark etmemiştim. Evet, bu da yeterli olmalıdır, ancak ['Application_PreSendRequestHeaders'] 'ı (https://msdn.microsoft.com/en-us/library/system.web.httpapplication.presendrequestheaders (v = vs. 110) .aspx) olayı mümkünse başlıkları eklemek için daha iyi bir zaman olabilir. –