我有一個asp.net應用程序(IIS7),並且我想要使用外部服務器IP對其進行阻止訪問。我只想允許使用我的域進行訪問。IIS7使用外部IP阻止對asp.net應用程序的請求
例如,我的域名是domain.com和IP 161.0.0.1,我想阻止訪問http://161.0.0.1/webapp/
我更喜歡使用的web.config提前
THX做到這一點,
我有一個asp.net應用程序(IIS7),並且我想要使用外部服務器IP對其進行阻止訪問。我只想允許使用我的域進行訪問。IIS7使用外部IP阻止對asp.net應用程序的請求
例如,我的域名是domain.com和IP 161.0.0.1,我想阻止訪問http://161.0.0.1/webapp/
我更喜歡使用的web.config提前
THX做到這一點,
在IIS中配置你希望自己的網站響應正是IP/DNS名稱的組合。您可以輕鬆強制它僅對特定IP進行響應。
對於IIS 7:
現在您的網站將只響應該特定域名,並且不會僅通過IP地址進行響應。
如果您的站點使用,然後SSL證書請參見下面的問題,其講述如何配置IIS以迫使主機使用:
https://serverfault.com/questions/96810/iis7-cant-set-host-name-on-site-with-ssl-cert-and-port-443
哪個環節:
http://www.sslshopper.com/article-ssl-host-headers-in-iis-7.html
這鏈接完全通過UI完成:http://blog.armgasys.com/?p=80
好吧,如果您希望通過DNS名稱訪問站點,而不是通過IP訪問,則區分這一點的唯一方法是檢查報頭中請求的主機名。有兩種方法可以做到:
1)在IIS管理器中配置綁定對話框。這是最容易設置的,但不適用於HTTPS。只需將www.domain.com放入主機名字段,並向IP請求就會被拒絕。對於HTTPS,如果您的安全證書是針對特定主機名的,那麼如果用戶嘗試通過IP連接,則會收到安全警告,但通常它們可以覆蓋警告(取決於瀏覽器設置)。
編輯: Chris Lively已經鏈接到一種使HTTPS綁定工作的方法,請參閱他的回答以獲取更多信息。
2)或者,您可以檢查代碼中的標題。這是一個IHttpModule
的例子,它可以完成你想要的任務。它也是一個在web.config中配置的插入式解決方案。
代碼:
Public Class HostNameCheck
Implements IHttpModule
Public Sub Dispose() Implements System.Web.IHttpModule.Dispose
End Sub
Public Sub Init(context As System.Web.HttpApplication) Implements System.Web.IHttpModule.Init
AddHandler context.BeginRequest, AddressOf context_BeginRequest
End Sub
Private Sub context_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
Dim objApp As HttpApplication = DirectCast(sender, HttpApplication)
If objApp.Request.Url.Host <> ConfigurationManager.AppSettings("AcceptedHostName") Then
objApp.Response.Clear()
objApp.Response.StatusCode = 403
objApp.Response.SubStatusCode = 6
objApp.Response.Flush()
End If
End Sub
End Class
Web.config文件:
<configuration>
<appSettings>
<add key="AcceptedHostName" value="www.domain.com"/>
</appSettings>
<system.webServer>
<modules>
<add name="HostNameCheck" type="HostNameCheck"/>
</modules>
</system.webServer>
</configuration>
這不是他要求的。如果服務器只有一個IP和一個DNS主機名指向該IP,他希望服務器在請求DNS主機名時作出響應,而不是在請求IP時響應。 – pseudocoder
@pseudocoder:在這種情況下,請將域名與IP一起設置。在這種情況下,IIS不允許直接的IP地址請求。輕微的編輯,以清除此問題。 – NotMe
這也是如此,並在我最近的帖子中提到,但不適用於HTTPS。這就是爲什麼我包含HttpModule示例的原因。 – pseudocoder