Фильтрация по referrer (hotlink).
В IIS нет возможности блокировать запросы поступающие с других сайтов(блокировка по Referrer). Например, когда на совершенно левом сайте ставят изображение с нашего. Иногда это может стать причиной большого трафика и нагрузок на сервер.
В Apache это встроенная функция, ничего придумывать не надо. А под IIS придется написать самим, но это не сложно :)
private void context_BeginRequest(object sender, EventArgs e)
{
HttpContext httpContext = ((HttpApplication)sender).Context;
if (ReguestIsValid(httpContext))
return;
if (httpContext.Request.UrlReferrer == null)
{
httpContext.Response.Write("Доступ запрещен");
httpContext.Response.End();
}
if (httpContext.Request.UrlReferrer.Host != httpContext.Request.Url.Host)
{
httpContext.Response.Write("Доступ запрещен ");
httpContext.Response.End();
}
}
private bool ReguestIsValid(HttpContext httpContext)
{
string mappings = ConfigurationManager.AppSettings["BlockEx"];
string fileName = httpContext.Request.PhysicalPath;
foreach (string map in mappings.Split('|'))
{
string cleaned = map.Replace("*", ".*").Replace(".", "\\.");
if (Regex.IsMatch(fileName, cleaned, RegexOptions.IgnoreCase))
return false;
}
return true;
}
В web.config указываем какие запросы мы хотим фильтровать.
<add key="BlockEx " value="*.png|*.jpg"/>
И все….
3 июля 2007 г. 11:42