Если вам нравится SbUP Форум, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....

 

Спамят почту

Автор BibBit, 13-06-2018, 12:15:03

« назад - далее »

jina

#10
В одно время тоже заспaмили почту, хотя и стояла блoкировка по фильтрации, пришлось на время закрыть форму регистрации и отправление писем.
Ищете хостинг?  Beget.ru - месяц бесплатного тестирования!
  •  


vladstalnih

reCAPTCHA проверяется только на клиенте, а при получении комментария WordPress сразу же отправляет уведомление, не проверяя токен. Нужно добавить серверную валидацию. В functions.php подключаем хук pre_comment_approved и в нём делаем запрос к Google API:

add_filter('pre_comment_approved', function($approved, $commentdata){
    $token = $_POST['g-recaptcha-response'] ?? '';
    $response = wp_remote_post('https://www.google.com/recaptcha/api/siteverify', [
        'body' => [
            'secret'   => 'YOUR_SECRET_KEY',
            'response' => $token,
            'remoteip' => $_SERVER['REMOTE_ADDR']
        ]
    ]);
    $result = json_decode(wp_remote_retrieve_body($response));
    return ($result && $result->success) ? $approved : 'spam';
}, 10, 2);

Если проверка не прошла комментарий помечается как спaм, и уведомление не отправляется. Дополнительно выключаем рaссылку для комментариев в Настройки → Обсуждение → Электронная почта при новых комментариях. Еще можно установить анти‑спaм‑плагин (Akismet, Antispam Bee) и включить модуль «Проверка комментариев» в WP‑Cron.


ProtectYourSite

@vladstalnih
Не советовал бы публиковать код, который мало того что не оптимальный, так еще и небезопасный.
Нельзя из $_POST напрямую получать что-то без фильтрации, кто-нибудь засунет в 'g-recaptcha-response' исполняемый код и сможет делать что угодно с сайтом)



Если вам нравится SbUP Форум, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....