wordpress rest api

FussesDemon

Администратор
Администратор
9 Фев 2005
5.478
643
113
www.unifree.ru
Связи с тем что довольно опасно держать открытым подключение я задумался. Как сделал бы я? При необходимости гонять различные данные внутри самого движка для запросов ajax и не только ... Для самих приложение давался бы динамично свой какой то кэш Который извне нельзя давать Получалось что какой плагин внутри вордпресс во время своего запроса вызванного во время процесса внутри получал бы от вордпресс этот разовый кэш Который после запроса нужно получать новый Тем самым из вне поделать запрос становиться невозможным так как гоняются запросы со сгенерированными на один раз кэшем Который нельзя угадать за ранее )) Все проблема решена с некоррелированным флудом спамом с неограниченными потоком запросов. Что тоже можно было применить к правилу кэша еще и количество возможный запросов которое может создать то или иное дополнение плагина
Например контактная форма известная своей популярностью "contact-form-7" Она использует в своей работе REST API что делает эту форму вкусной для спамеров которые используя REST спамять без ограничений )) ДАААа можно установить капчу от гугла которая есть на борту Но нафига ? Это лишний сервис и тягомотина по борьбе со спасом https://xn--80apjgdy9f.xn--p1ai/threads/Спам-spam-комментарии-публикации-с-множеством-ссылок.28114/

Это пример для contact-form-7 после того как отключим REST API как тут по примеру -> https://xn--80apjgdy9f.xn--p1ai/threads/cms-Системы-управления-контентом.4886/#post-611053
PHP:
function restrict_rest_api_to_localhost() {
    $whitelist = [ $_SERVER['LOCAL_ADDR'], "::1",'127.0.0.1'];

    if( !in_array($_SERVER['REMOTE_ADDR'], $whitelist ) && empty($_POST['_wpcf7']) && !strpos($_SERVER['REQUEST_URI'], 'refill') ){
        die( 'REST API is disabled.' );
    }
}
add_action( 'rest_api_init', 'restrict_rest_api_to_localhost', 0 );
 

FussesDemon

Администратор
Администратор
9 Фев 2005
5.478
643
113
www.unifree.ru
Собирать данные кто юзает REST можно на примере такого кода

PHP:
if( rest_get_url_prefix() === explode( '/', $_SERVER['REQUEST_URI'] )[1] ?? '' ){
    // this is rest request
    file_put_contents('./_REST.txt',$_SERVER['REQUEST_URI'].' '.$_COOKIE['PHPSESSID'].' '.date('[Y-m-d H:i:s] ').PHP_EOL,FILE_APPEND);
}
Анализируем запросы Кто когда и нафига )) Плюс в сочетании с логами от веб сервера становиться понятно много Кто конкретно и что делал и че хотел

Между делом подозреваю яндекс за спамом Не точно но уже было несколько совпадений когда есть бот от яшки и больше никого на сайте И сразу появляется какой то непонятный IP и сразу идет спам Странно !
Я не удивлюсь если оно так Ростелеком подменяет трафик уже больше 5-6 лет точно О какой тут фантастике идет речь ))) Что яндекс не может флудить спамом?)))