在IIS中,我注意到我可以拒絕訪問服務器上的任何文件擴展名。例如,我拒絕訪問.jpg圖像。但是,然後瀏覽器將無法在我的網站上顯示.jpg圖像。拒絕IIS中的文件擴展名
我想知道,IIS是否允許我們拒絕直接訪問文件擴展名或文件名(通過在地址欄中輸入完整的url),同時仍然向瀏覽器提供它們該文件?
在IIS中,我注意到我可以拒絕訪問服務器上的任何文件擴展名。例如,我拒絕訪問.jpg圖像。但是,然後瀏覽器將無法在我的網站上顯示.jpg圖像。拒絕IIS中的文件擴展名
我想知道,IIS是否允許我們拒絕直接訪問文件擴展名或文件名(通過在地址欄中輸入完整的url),同時仍然向瀏覽器提供它們該文件?
你不能真的阻止這樣做;確定的人可以下載網頁可以下載的任何內容。但是,通過檢查請求中的HTTP引用來源,您可以使技術性較差的文檔稍微難一些。如果它是您的其中一個網頁的網址,則可以允許該請求。否則,你可以否認它。這種技術常常用於防止深度鏈接。
這裏是你如何能做到這與.NET HTTP模塊的樣品(未經測試):
public class ImageDenyingModule : IHttpModule
{
public void Init(HttpApplication app)
{
app.BeginRequest += (s, e) => {
var request = app.Context.Request;
if (RequiresPageReferrer(request.Url) && !IsValidReferer(request.UrlReferrer)) {
app.Context.Response.StatusCode = 404;
app.Context.Response.End(); // Or something...
}
};
}
private bool RequiresPageReferrer(string url) {
}
private bool IsValidReferrer(string referrer) {
}
}
您可以用自定義HTTP處理程序做到這一點。
http://support.microsoft.com/kb/308001
如果您創建一個JPG文件自定義處理程序,那麼你可以檢查請求的引用者,服務圖像或取消該請求。
真棒。非常感謝你@Gusman! – uSeRnAmEhAhAhAhAhA
我不認爲Web服務器可以真正知道他們是否被文檔或直接請求。 HTTP請求看起來一樣。 –