Как запретить загрузку внешних iframe в WordPress для безопасности сайта

Встраивание iframe с внешних ресурсов часто используется для реализации различных функциональностей, таких как видео, карты, формы и виджеты. Однако, неконтролируемое использование iframe может стать источником угроз безопасности — например, XSS-атак, фишинга или снижения производительности сайта. В этой статье мы рассмотрим, как запретить загрузку iframe с внешних доменов на сайте WordPress, оставив возможность использовать iframe только с доверенных источников, либо полностью блокируя их.

Почему важно контролировать загрузку внешних iframe

Внешние iframe могут загружать вредоносный контент, перехватывать клики или показывать нежелательную рекламу. Вредоносный iframe способен нанести вред как посетителям сайта, так и самому ресурсу — например, через уязвимости в браузерах или эксплойты. Также iframe могут создавать дополнительные запросы, замедлять загрузку страниц и ухудшать SEO.

С точки зрения безопасности важно:

  • Запретить iframe с непроверенных источников;
  • Разрешить iframe только с доверенных доменов;
  • Использовать Content Security Policy (CSP) для контроля загрузки внешних ресурсов;
  • Проверять содержимое постов и комментариев на наличие iframe при сохранении.

Методы запрета загрузки внешних iframe

1. Использование Content Security Policy (CSP)

CSP — это HTTP-заголовок, который позволяет ограничить источники загрузки различных ресурсов, включая iframe. Добавив настройку frame-src или child-src, можно разрешить iframe только с конкретных доменов или полностью заблокировать их.

Пример добавления CSP в файл functions.php вашей темы для запрета всех iframe:

add_action('send_headers', function() {
    header("Content-Security-Policy: frame-src 'none';");
});

Если нужно разрешить iframe только с YouTube и Vimeo:

add_action('send_headers', function() {
    header("Content-Security-Policy: frame-src https://www.youtube.com https://player.vimeo.com;");
});

Этот способ надежен, так как блокирует загрузку на уровне браузера.

2. Фильтрация контента при сохранении и выводе

Для контроля iframe в содержимом постов и комментариев можно использовать фильтры WordPress, которые будут проверять и удалять теги iframe с нежелательных доменов.

Пример функции, которая удаляет iframe с внешних сайтов, оставляя только разрешённые домены:

function wpsync_filter_iframes($content) {
    if (strpos($content, '<iframe') === false) {
        return $content;
    }

    $allowed_domains = [
        'www.youtube.com',
        'player.vimeo.com'
    ];

    // Загружаем HTML в DOMDocument
    libxml_use_internal_errors(true);
    $dom = new DOMDocument();
    $dom->loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8'));

    $iframes = $dom->getElementsByTagName('iframe');
    $remove = [];

    foreach ($iframes as $iframe) {
        $src = $iframe->getAttribute('src');
        $host = parse_url($src, PHP_URL_HOST);
        if (!in_array($host, $allowed_domains)) {
            $remove[] = $iframe;
        }
    }

    foreach ($remove as $node) {
        $node->parentNode->removeChild($node);
    }

    // Получаем очищенный HTML
    $body = $dom->getElementsByTagName('body')->item(0);
    $new_content = '';
    foreach ($body->childNodes as $child) {
        $new_content .= $dom->saveHTML($child);
    }

    return $new_content;
}

add_filter('the_content', 'wpsync_filter_iframes');
add_filter('comment_text', 'wpsync_filter_iframes');

Эта функция позволяет гибко контролировать, какие iframe остаются в контенте, а какие удаляются.

3. Плагины для блокировки iframe

Если вы не хотите писать код, можно использовать готовые плагины для безопасности и контроля контента:

  • WP Content Copy Protection — позволяет запретить копирование, включая блокировку iframe.
  • Safe HTML — фильтрует HTML и позволяет разрешить только безопасные теги, включая iframe с определённых источников.
  • Clearfy Pro — оптимизационный плагин с функциями безопасности, в том числе контролем iframe.

Например, в Clearfy Pro можно включить опцию блокировки iframe с незнакомых источников, что поможет избежать внедрения вредоносного контента.

Практический пример: Запрет iframe с любых сторонних сайтов, разрешая только YouTube

Объединим методы и создадим простой плагин, который добавит CSP заголовок и фильтрует iframe в содержимом:

<?php
/*
Plugin Name: WPSync Iframe Control
Description: Запрет загрузки iframe с внешних доменов, кроме YouTube.
Version: 1.0
Author: WPSync
*/

add_action('send_headers', function() {
    header("Content-Security-Policy: frame-src https://www.youtube.com;");
});

function wpsync_filter_iframes($content) {
    if (strpos($content, '<iframe') === false) {
        return $content;
    }

    $allowed_domains = ['www.youtube.com'];

    libxml_use_internal_errors(true);
    $dom = new DOMDocument();
    $dom->loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8'));

    $iframes = $dom->getElementsByTagName('iframe');
    $remove = [];

    foreach ($iframes as $iframe) {
        $src = $iframe->getAttribute('src');
        $host = parse_url($src, PHP_URL_HOST);
        if (!in_array($host, $allowed_domains)) {
            $remove[] = $iframe;
        }
    }

    foreach ($remove as $node) {
        $node->parentNode->removeChild($node);
    }

    $body = $dom->getElementsByTagName('body')->item(0);
    $new_content = '';
    foreach ($body->childNodes as $child) {
        $new_content .= $dom->saveHTML($child);
    }

    return $new_content;
}

add_filter('the_content', 'wpsync_filter_iframes');
add_filter('comment_text', 'wpsync_filter_iframes');
?>

Этот плагин надежно блокирует iframe с любых источников, кроме YouTube, и предотвращает загрузку в браузере с помощью CSP.

Выводы и рекомендации

Контроль iframe на сайте WordPress — важный аспект безопасности и производительности. Используйте CSP для блокировки загрузки iframe на уровне браузера и дополнительно фильтруйте содержимое через PHP, чтобы избежать внедрения нежелательных тегов. Готовые плагины, такие как Clearfy Pro, могут облегчить задачу, особенно если вы не хотите заниматься кодом.

Рекомендуется проверить работу сайта после внедрения ограничений, чтобы не нарушить функционал легитимных iframe, например, видеоплееров или карт.

Подробнее о безопасной настройке WordPress и оптимизации можно узнать на Clearfy Pro.

Как синхронизировать виджеты WordPress между сайтами
09.01.2026
Как сделать автоматическую синхронизацию оповещений WordPress между сайтами
24.03.2026
Использование REST API для синхронизации пользователей и ролей WooCommerce между сайтами WordPress
23.05.2026
Как избавиться от проблем с переадресацией в WordPress при использовании WooCommerce
07.05.2026
Как удалить заблокированные аккаунты WordPress: практическое руководство
10.04.2026