Могу ли я занести в белый список IP-адреса, используя IIS, работающий на PHP-сайте? - PullRequest
2 голосов
/ 25 июня 2009

Как отмечается в этом сообщении, блокировка IP через PHP довольно просто.

Тем не менее, как я могу сделать это для всего сайта, используя IIS?

Вот мои (большие) предостережения:

  1. У меня нет доступа для изменения php.ini. Поэтому я не могу использовать функцию auto_prepend.
  2. Я в Windows с IIS, поэтому не могу использовать .htaccess.
  3. У меня нет PHP-колонтитула, который вызывается для всех сценариев. На самом деле, многие страницы являются статическими HTML!

Можно ли использовать IIS для внесения в белый список IP-адресов?

Хорошей новостью является то, что у меня есть статический список IP-адресов для белого списка, поэтому мне не нужно легко их менять.

Ответы [ 2 ]

4 голосов
/ 25 июня 2009

Вы можете занести белый список IP-адресов в IIS, что должно дать вам результаты, которые вы хотите.

  • В IIS 6.0 щелкните правой кнопкой мыши свой веб-сайт и выберите свойства.
  • Перейдите на вкладку Безопасность каталога.
  • Нажмите «Изменить» для «IP-адреса и ограничения доменного имени»
  • Нажмите переключатель «Отказано в доступе».
  • Введите любые IP-адреса, которые вы хотите разрешить.
2 голосов
/ 25 июня 2009

Для этого вы можете использовать URL Rewriter, например IIRF . Вставьте правила, чтобы вернуть 404 или что-либо еще, на запросы, которые приходят с запрещенных IP-адресов. Это будет работать с любой платформой веб-приложения: PHP, Java, ASP.NET, RoR, статический HTML или изображения, что угодно.

В файле readme приведен пример, подобный следующему:

RewriteCond %{REMOTE_ADDR}   ^(?!127.0.0.1)([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})(.*)$
RewriteRule  ^/(?!redirected.htm)(.*)$      /redirected.htm

и там написано:

Приведенное выше условие оценивается как истинное, когда переменная сервера "REMOTE_ADDR" оценивается по IP-адресу, который НЕ является 127.0.0.1. ?! является отрицательным прогнозом нулевой ширины, и (. *) в конце регулярного выражения - это отлов любого мусора, который иногда появляется в этой переменной. Правило, следующее за условием, говорит, что для любого URL, который не является «redirected.htm», сопоставьте его с «redirected.htm». Это предотвращает бесконечное переписывание. (Вы также можете предотвратить бесконечное переписывание с помощью флага модификатора [L]).

Этот RewriteCond + RewriteRule перенаправляет любые исходящие запросы на сервер IIS. Вы можете сделать что-то подобное для определенного набора IP-адресов из белого списка.

IIRF - это фильтр ISAPI, написанный на C, и по своей философии он похож на mod_rewrite. Он работает с IIS5, 6 или 7. Вам потребуется доступ администратора для его настройки. Вам не нужно «программировать это», но есть INI-файл с синтаксисом, аналогичным .htaccess (специально для правил mod_rewrite).

IIRF является бесплатным и открытым исходным кодом.

...