В общем, еще немного расследований и пожеланий к улучшению.
Как я говорил в самом начале, session_gc() также чистит и таблицу confirm, в которую записи добавляются при каждом дерганье Гостем posting.php.
После того как сессии успешно почистились, успешно почистилась и табличка confirm — вместо 4,5 млн записей осталось 220 тысяч.
И эти 220 тыс. как-то не уменьшаются... Решил я посмотреть, что там внутри, и оказалось, что все сгенеренные капчи (кроме 5-7 штук) — принадлежат одной сессии! Т.е. 220 тыщ капч для одной сессии (а значит, она живая).
Решил посомтреть, что это за сессия, и оказалось, что с 22 октября под этой сессией ходит нечто
IP: 54.144.21.1
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Amazonbot/0.1; +
https://develop
Какой-то амазоновый бот, причем вроде не просто кто-то развернул какой-то граббер, а вроде реально что-то амазоновое (но не уверен) - может кто знает что это?
https://developer.amazon.com/support/amazonbot
Ну и собсно время от времени он натыкается на постинг и нагенерил за две недели уже 220 тыщ капч
Можно было бы втупую заблочить его по IP или User-Agent, но я все же решил плюнуть на него и посомтреть, почему генерится капча для Гостей.
Прежде всего
Siava писал(а): ↑01.11.2019 20:03
В настройках безопасности есть такая строка, "привязать формы к гостевым сессиям" или что-то в таком духе. Быть может её использование генерит кучу confirm?
Так, пальцем в небо тычу..
Не, не оно
Глянул код posting.php
Там почти в самом начале процесса встречаем (в районе 259 строки)
Код: Выделить всё
if ($config['enable_post_confirm'] && !$user->data['is_registered'])
{
$captcha = $phpbb_container->get('captcha.factory')->get_instance($config['captcha_plugin']);
$captcha->init(CONFIRM_POST);
}
До этого никаких проверок нет - вот мы и получили еще одну капчу в таблице confirm.
Чтобы этого избежать, достаточно изменить в настройках форума:
Использовать средства против спам-ботов при отправке сообщений гостями:
(Enable spambot countermeasures for guest postings:)
Поскольку Гостям в принципе не разрешается что-либо постить, то отключение этой штуки решает проблему с добавлением таких капч.
Если же копнуть в сам код и предложить улучшения — все просто, нужно этту генерацию капчи перенести пониже, наверно после опеределения переменной $is_authed (где-то так в районе экстеншена @event core.modify_posting_auth)
Как считатете?
Да, ну и этого Amazonbot тоже можно в список ботов добавить...
PS. А еще у меня есть проблемка с удалением пользователей - там тоже используется пара "нелучших" запросов, с которыми при большой БД практически исчезает возможность удаления даже единичного пользователя, не говоря уже о пачке за раз - если позволите, под этой случай создам все же отдельный топик. Может тоже какие усовершенствования добавятся в 3.3...
rxu писал(а): ↑03.11.2019 16:38А если так
Пока не добрался, постараюсь завтра