2017-09-23 61 views
0

我正在研究你的基本反水蛭(黑名單品種)。我在日誌中獲得這些推薦人,但是當我嘗試訪問Request.UrlReferrer時,它是null。所以是Request.ServerVariables("HTTP_REFERER")推薦人被記錄,但HttpReferrer爲空

下面是一個引用的例子。這些都顯示在IIS日誌文件中,但隨着請求的進入,我無法在後面的代碼中訪問它以根據我的黑名單進行檢查。

http://www.pinsdaddy.com/cambria-california-wedding-photography-18-mirrors-edge_cJ8jn4pAJmKSlbTCSdOcIvct6EKJC1hNE9RvlPVWmmc3iL7RWbE8NWPK2e3AlHufGJ5Y4wEz0KwkTr5tdCFtuA/HU*r3vNj3fj*lmybrtHKWHIaJbhl%7CrPNYEBp5h1LLrgiOrQqUd1yFlcQ4zk2Fg92M72f*uRfYUoZ5yXmlQZOG7*Zo6iLIcxD1tBIqMGCECNyCYSstZQN4HOcXTJocIDYNEftok4Anz4aQVpSK0CYVtVI7pYG51JUH3TWgg0KEUQRZd5ZF8UI4qQ5tseiERUk7gsHebxA3eF1LCFjrZ4PHw/ 

由於我登錄這個討厭的東西,我想不通爲什麼它不在我的HTTP模塊可用。每個其他網站鏈接的圖像都很好 - 只是不是這個特別討厭的。

我試過各種方法。 Request.UrlReferrer.AbsoluteUriRequest.UrlReferrer.Host

string referrer = "Empty Referrer"; 
HttpContext context = ((HttpApplication)sender).Context; 
if (context.Request.UrlReferrer != null) 
{ 
    referrer = context.Request.UrlReferrer.AbsoluteUri; 
} 

我開始懷疑,如果在引用值的字符組合在.NET地方炸燬。 IIS得到它很好,所以我應該能夠在代碼中訪問它。

注 - 這些是http到http請求。沒有SSL。

回答

1

你其實並不需要實現自己的代碼來處理這個問題

IIS重寫模塊可以做,可以解決你

如果我是正確的,你想阻止某些要求的問題基本的東西與某些轉診,或者你可能只是想阻止所有

的例子是僅阻止HTTP:// .pinsdaddy.com和http:// .somesite.com

,也你可以添加儘可能多的,你想要的,並與正則表達式

<rules> 
    <clear /> 
    <rule name="RequestBlockingRule1" patternSyntax="Wildcard" stopProcessing="true"> 
     <match url="*" /> 
     <conditions logicalGrouping="MatchAny"> 
      <add input="{HTTP_REFERER}" pattern="http://*.pinsdaddy.com" /> 
      <add input="{HTTP_REFERER}" pattern="http://*.somesite.com" /> 
     </conditions> 
     <action type="CustomResponse" statusCode="403" statusReason="Forbidden: Access is denied." statusDescription="You do not have permission to view this directory or page using the credentials that you supplied." /> 
    </rule> 
    </rules> 
+0

是的,我現在實際上正在嘗試。使用rewriteMaps,你的方法比我見過的其他方法簡單一些。我會試一試 - 謝謝你! – Ripside

+0

接受這個答案,儘管它不能幫助我處理引用鏈接中的格式不正確的URI,但這確實有效。再次感謝! – Ripside

+1

如果你想處理格式不正確的uri,你可以試試模式上的正則表達式。那麼您將需要更改patternSyntax =「ECMAScript」,並修改模式 –