Динамический черный список IP .htaccess?

Можно ли заблокировать пользователей с IP-адресов с помощью динамического черного списка на основе файлов?

Итак, предположим, что .htaccess выглядит так:

order Deny,Allow
Deny from 123.156.0.1
Deny from 10.0.0.10
Allow from all

Можно ли сделать этот список динамическим, например:

order Deny,Allow
[include Deny list here]
Allow from all

Другим вариантом, конечно, было бы исправить это с помощью PHP, но предпочтительнее, чтобы Apache справился с этим.


person wspruijt    schedule 02.07.2010    source источник


Ответы (2)


Согласно документам Apache, не представляется возможным читать значения из текстового файла.

Однако вы можете include добавить файл конфигурации, содержащий IP-адреса. Однако они должны быть в формате файла конфигурации Apache.

Это должно работать:

order Deny,Allow
include conf/IPList.conf
Allow from all

Можно даже include целые каталоги, хотя это и не рекомендуется.

person Unicron    schedule 02.07.2010
comment
Вы не указали формат выборки данных, который должен быть в conf/IPList.conf, так как это также является обязательной частью вашего ответа. - person Nah; 19.12.2018

Я использую функцию RewriteMap из Apache RewriteModule в качестве белого списка, например это:

## WHITELIST IPS ##
RewriteMap ipslist txt:/path/to/whitelist.txt
RewriteCond %{REMOTE_ADDR} ^(.*)$
RewriteCond ${ipslist:%1|black} ^black$ [NC]
RewriteRule (.*) - [F]

С некоторой настройкой вы можете сделать это черным списком.

person schmkr    schedule 05.07.2010
comment
RewriteMap — хороший подход, но он будет работать только в контексте сервера или виртуального хоста, то есть не .htaccess. - person Jason; 09.08.2012
comment
Вы не указали местонахождение этого скрипта, куда этот скрипт можно добавить и какой формат данных будет в whitelist.txt или blacklist.txt. - person Nah; 19.12.2018