IndexNow — современный протокол для мгновенного уведомления поисковых систем об изменениях на сайте. Для работы с IndexNow требуется использовать ключ API, который служит идентификатором сайта. Вопрос безопасности хранения и использования этих ключей становится особенно важным, чтобы избежать утечек и несанкционированного использования.
Почему важно правильно хранить ключи IndexNow в WordPress
Ключи IndexNow — это своего рода пароль, позволяющий отправлять поисковикам информацию о новых и измененных URL. Если ключ попадет в руки злоумышленников, они смогут отправлять ложные уведомления, что приведет к проблемам с индексацией сайта и даже к штрафам со стороны поисковых систем.
В WordPress ключи часто хранятся в открытом виде в файлах темы или плагина, что небезопасно. Особенно если на сайте есть несколько разработчиков или если исходники доступны через систему контроля версий.
Правильное хранение ключей помогает:
- Предотвратить несанкционированный доступ;
- Обеспечить стабильную работу уведомлений IndexNow;
- Снизить риски компрометации сайта.
Где хранить ключи API IndexNow в WordPress: лучшие практики
Существует несколько способов безопасного хранения ключей в WordPress. Рассмотрим их по порядку:
1. В файле wp-config.php
Это один из самых безопасных вариантов, так как файл wp-config.php находится вне директории с публичными файлами сайта и защищен от прямого доступа. Добавьте в него строку:
define('INDEXNOW_API_KEY', 'ваш_уникальный_ключ_здесь');Далее в плагине или функции для отправки уведомлений обращайтесь к константе INDEXNOW_API_KEY. Например:
function indexnowsu_get_api_key() {
return defined('INDEXNOW_API_KEY') ? INDEXNOW_API_KEY : '';
}2. Использование системного окружения (env)
Если хостинг поддерживает переменные окружения, можно хранить ключ в них и считывать через PHP:
function indexnowsu_get_api_key() {
return getenv('INDEXNOW_API_KEY') ?: '';
}<Для этого в настройках сервера или в файле .env (если используется) добавьте ключ.
3. Хранение в параметрах настроек WordPress с шифрованием
Если ключ должен быть доступен через интерфейс админки, можно хранить его в опциях с использованием шифрования. Например, используя библиотеку libsodium:
function indexnowsu_encrypt_key($key) {
$keyEncryptionKey = 'секретный_ключ_шифрования';
return sodium_crypto_secretbox($key, random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES), $keyEncryptionKey);
}
function indexnowsu_decrypt_key($encrypted) {
$keyEncryptionKey = 'секретный_ключ_шифрования';
// Расшифровка ключа
}Этот способ более сложный, но подходит для расширенных настроек плагинов.
Пример безопасного плагина для отправки URL в IndexNow с использованием ключа из wp-config.php
Создадим минимальный пример функции отправки URL с использованием ключа:
function indexnowsu_send_url_to_indexnow($url) {
$apiKey = defined('INDEXNOW_API_KEY') ? INDEXNOW_API_KEY : '';
if (empty($apiKey)) {
error_log('IndexNow API key is not defined');
return false;
}
$endpoint = 'https://api.indexnow.org/indexnow';
$payload = [
'host' => parse_url($url, PHP_URL_HOST),
'key' => $apiKey,
'keyLocation' => home_url('/' . $apiKey . '.txt'),
'urlList' => [$url],
];
$response = wp_remote_post($endpoint, [
'headers' => ['Content-Type' => 'application/json'],
'body' => json_encode($payload),
'timeout' => 10,
]);
if (is_wp_error($response)) {
error_log('IndexNow send URL error: ' . $response->get_error_message());
return false;
}
$code = wp_remote_retrieve_response_code($response);
return $code === 200;
}Важно, чтобы файл с ключом (ключ.txt) был размещен в корне сайта и доступен по адресу https://ваш-сайт/ключ.txt.
Дополнительные рекомендации по безопасности при работе с IndexNow в WordPress
Регулярно обновляйте ключи
Если есть подозрения, что ключ мог быть скомпрометирован, немедленно сгенерируйте новый и замените старый. Также удалите старый файл ключ.txt с сервера.
Ограничьте доступ к админке
Поскольку ключ может храниться в настройках или файлах, важно ограничить доступ к панели администратора, используя двухфакторную аутентификацию и надежные пароли.
Используйте проверенные плагины
Если хотите использовать готовые решения для интеграции IndexNow, выбирайте плагины с хорошими отзывами и поддержкой. Например, на WPSHOP есть несколько надёжных плагинов с поддержкой правильного хранения ключей.
Выводы
Правильное хранение и использование ключей API IndexNow — обязательный элемент безопасности при работе с протоколом в WordPress. Использование констант в wp-config.php, переменных окружения и, при необходимости, шифрования — лучшие практики для защиты вашего сайта. Не пренебрегайте этими методами, чтобы избежать проблем с индексацией и сохранить контроль над отправляемыми URL.