ПОДКЛЮЧЕНИЕ через .user.ini

Файл .user.ini является аналогом настроек php.ini для переопределения некоторых параметров PHP пользователем для отдельного сайта или отдельной директории. На шаред хостингах в основном такой функционал запрещен, но если у вас свой VPS или выделенный сервер, то это может быть удобным способом подключения скрипта Антибот.

Для подключения скрипта Антибот через .user.ini - создать в корне сайта файл со строго таким именем (с точкой в начале), с содержимым (указав путь относительно корня своего сервера) вида:

auto_prepend_file = "/home/admin/site.com/antibot/code/include.php"

Файл создавать (загружать) от имени того пользователя, от которого работает PHP. Важно чтобы владелец этого файла был не root пользователь, т.к веб сервер его тогда не сможет прочитать.

Далее скорее всего придется подождать 300 секунд (или сколько указано в user_ini.cache_ttl), т.к перечитывание этого файла сервером происходит не чаще, чем указанно в этом параметре.

Если по прошествии этого времени на сайте не начала появляться проверка на ботов, то скорее всего на сервере отключена возможность использования данного файла.

Антибот подключенный через .user.ini защищает только страницы, генерящиеся средствами PHP. Статичные .html файлы не защищаются.

Важно защитить этот файл от доступа в браузере. Т.к. он содержит путь от корня сервера до директории домена. А показывать эту информацию посторонним - это уже уязвимость: Раскрытие серверного пути (Full Path Disclosure).

Защита .user.ini в Nginx:

Добавьте следующее правило в конфигурационный файл Nginx, обычно это /etc/nginx/nginx.conf или в конфигурационный файл вашего домена в /etc/nginx/sites-available/:

location ~ /\.user\.ini {
deny all;
return 403;
}

Не забудьте перезагрузить Nginx после внесения изменений: sudo service nginx reload

Защита .user.ini в Apache через .htaccess:

Добавьте следующие строки в ваш файл .htaccess:

<Files ".user.ini">
Require all denied
</Files>

Защита .user.ini в Lighttpd:

Добавьте следующее правило в ваш конфигурационный файл lighttpd.conf:

url.access-deny = ( "~", ".user.ini" )

И затем перезагрузите Lighttpd: sudo service lighttpd restart

Если послед подключения скрипта Антибот на свой сайт в браузере вместо своего сайта вы получаете ошибку 500 (внутренняя ошибка сервера), то причины такой ошибки скорее всего придется искать в серверных логах ошибок (в логах nginx или apache), хотя иногда они могут быть в логе PHP ошибок.

Возможно при придключении скрипта Антибот через .user.ini понадобится добавить в ALLOW строку /.well-known/acme-challenge/ в таблицу № 4 правил. Это может понадобиться, если у вас Let's Encrypt SSL сертификат создается вашим хостингом.

Если у вас уже есть другие скрипты, подключенные таким способом:

Одновременно подключать несколько скриптов нельзя, если будет несколько записей, то будет подключаться только одно (второе правило). Но решение есть:

Создать новый PHP файл и подключить его. А в него уже прописать подключение (include) всех нужных скриптов. Антибот скорее всего нужно подключать первым, чтобы он исполнялся раньше других скриптов и защищал все скрипты и страницы сайта.


Информация обновлена: 24.12.2025 - 14:44.