Блокировать прямой доступ к URL и разрешить доступ только системе - PullRequest
2 голосов
/ 09 декабря 2011

Я хочу заблокировать доступ к URL со всего, кроме iis usr, который запрашивает изображение.

Итак, у меня есть: www.myurl.com/somedirectory/myfile.ashx

Я хочу, чтобы только мои запросы из кода могли иметь доступ к этому файлу, а не пользователи / боты / не клиенты, которые могут вручную просмотреть файл, перейдя по URL-адресу.

Необходимо учитывать, что серверы сбалансированы по нагрузке. Я не уверен, что это вызовет проблему.

Как бы я поступил так.

Запрашиваемая сторона сервера:

HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(imageUrl);
httpRequest.Method = "GET";
httpRequest.UserAgent = "MobileQ.NET";
httpRequest.ContentType = "image/png";
response = httpRequest.GetResponse().GetResponseStream();

Ответы [ 2 ]

1 голос
/ 09 декабря 2011

Вы можете проверить свой myfile.ashx, если запрос от localhost:

string client = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
if(client == "localhost" || client == "127.0.0.1" || client == "::1")
    //DoWork
else
{
    HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.Forbidden;
    return;
}
1 голос
/ 09 декабря 2011

IIS7 имеет встроенную фильтрацию запросов, которая может помочь, если вы используете эту версию или, конечно,

http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...