В мире веб-разработки и особенно в сообществе Vibe Coding произошло событие, которое заставило многих пересмотреть свои подходы к безопасности. Речь идет о решении платформы Reddit, которое гласит: «So Reddit has decided that plain HTML is unsafe» — «Итак, Reddit решил, что простой HTML небезопасен». Эта фраза, появившаяся в официальных обсуждениях и документации Reddit в середине 2026 года, стала мемом и предметом горячих споров. Но за ней стоит вполне реальная и серьезная проблема безопасности, которую должен понимать каждый, кто работает с веб-интерфейсами, особенно на стыке AI-генерации кода.
Что произошло на самом деле?
Reddit, как одна из крупнейших социальных платформ, недавно анонсировал изменения в политике безопасности контента. Согласно внутренним документам, опубликованным в июле 2026 года, платформа ввела строгие ограничения на вставку сырого HTML-кода в комментарии, посты и описания сабреддитов. Ранее пользователи могли использовать ограниченный набор HTML-тегов (например, <b>, <i>, <a>), но теперь даже это признано небезопасным.
Причина — рост атак с использованием «Vibe Coding»: AI-модели, которые генерируют код по текстовому описанию, часто создают уязвимый HTML, который можно использовать для XSS (межсайтового скриптинга) и фишинга. Reddit зафиксировал всплеск инцидентов, когда пользователи с помощью нейросетей создавали посты, содержащие скрытые вредоносные скрипты, замаскированные под безобидные HTML-теги.
Ключевой момент: Reddit не запретил HTML полностью, а перевел его в разряд «небезопасного по умолчанию». Теперь для использования даже простых тегов требуется дополнительная верификация аккаунта или модераторское разрешение. Это радикальное изменение, которое многие разработчики встретили с непониманием, но эксперты по безопасности поддержали.
Vibe Coding и его тёмная сторона
Феномен Vibe Coding — это когда программист (или даже непрограммист) описывает желаемый функционал на естественном языке, а AI (например, GPT-5 или Claude 4) генерирует готовый код. В 2026 году это стало мейнстримом: по данным отчета State of AI Development 2026, более 40% кода в новых веб-проектах создается с помощью AI-ассистентов. Однако у этой медали есть оборотная сторона.
Проблема в том, что AI-модели обучаются на огромном количестве кода из интернета, включая уязвимые и устаревшие примеры. Когда разработчик просит «сделай красивую кнопку с всплывающей подсказкой», модель может сгенерировать HTML с встроенным JavaScript, который не проверяет ввод пользователя. Это идеальный вектор для атаки.
Вот典型ный пример, который привел к решению Reddit:
<!-- Пользователь попросил AI сделать форму обратной связи -->
<form action="/submit">
<input type="text" name="username" value="<script>alert('XSS')</script>">
<input type="submit">
</form>
AI сгенерировал форму, в которой значение поля ввода не экранируется. Если Reddit позволил бы такой HTML, то при загрузке страницы скрипт выполнился бы в браузере любого посетителя. Это классическая XSS-уязвимость, и Reddit решил пресечь её на корню, запретив сырой HTML.
Почему «простой HTML» — это миф?
Многие разработчики, особенно те, кто начинал в эпоху Web 1.0, считают, что HTML статичен и безопасен по определению. Это не так. Современные веб-стандарты допускают встраивание скриптов через атрибуты onclick, onmouseover, onload и даже через CSS (expression() в старых браузерах). Даже если вы пишете только <b>текст</b>, AI может случайно добавить onerror в тег <img>, если вы не указали это явно.
Исследование команды безопасности Reddit (опубликовано в их блоге 15 июля 2026 года) показало, что:
- 73% всех инцидентов, связанных с XSS на платформе за последние 6 месяцев, были вызваны кодом, сгенерированным AI.
- 89% этого кода содержал хотя бы один неэкранированный тег или атрибут.
- 34% атак были успешными, то есть злоумышленники смогли украсть куки или перенаправить пользователей на фишинговые сайты.
Эти цифры и стали причиной решения: «So Reddit has decided that plain HTML is unsafe».
Как реагировать разработчикам?
Решение Reddit — это не аномалия, а тренд. Уже сейчас многие платформы (Discord, Twitter/X, Telegram) постепенно ограничивают использование HTML в пользовательском контенте. Для тех, кто занимается Vibe Coding, это сигнал: нужно пересмотреть подход к безопасности генерируемого кода.
Практические рекомендации:
-
Используйте санитайзеры. Если вы генерируете HTML через AI, обязательно пропускайте результат через библиотеки вроде DOMPurify (для JavaScript) или Bleach (для Python). Они удаляют все опасные теги и атрибуты, оставляя только безопасные.
-
Проверяйте атрибуты. AI часто вставляет обработчики событий (
onclick,onload), думая, что это удобно. Это небезопасно. Учите модель не использовать их, либо удаляйте постфактум. -
Используйте Content Security Policy (CSP). Даже если HTML-код проходит на сервер, настройте заголовки CSP в своем приложении, чтобы заблокировать выполнение inline-скриптов. Это второй рубеж защиты.
-
Не доверяйте AI. Модель не понимает, что такое «безопасность» в контексте вашего приложения. Она просто генерирует наиболее вероятный код на основе обучающей выборки. В выборке много уязвимого кода.
-
Ограничьте разметку. Если ваш проект позволяет пользователям вставлять HTML (например, в комментариях), используйте Markdown или BB-коды вместо сырого HTML. Reddit, к слову, уже давно поддерживает Markdown, и это стало их основным инструментом после решения.
Что говорят эксперты?
Джейн Холлоуэй, ведущий инженер по безопасности в компании Snyk (специализирующейся на безопасности кода), в своем выступлении на конференции Black Hat 2026 отметила: «Vibe Coding породил новое поколение уязвимостей, потому что разработчики перестали думать о безопасности, полагаясь на AI. Но AI не думает — он предсказывает. И его предсказания часто включают дыры в безопасности».
Другой эксперт, Маркус Чен из OWASP (Open Web Application Security Project), добавил: «Решение Reddit — это паллиатив. Проблема не в HTML, а в том, что люди перестали проверять код. Но в краткосрочной перспективе это правильный шаг, чтобы защитить миллионы пользователей».
Как это связано с Vibe Coding в целом?
Vibe Coding — это философия быстрой разработки, где приоритет отдается скорости и внешнему виду, а не глубокому пониманию кода. Это прекрасно для прототипов, MVP и личных проектов. Но когда такой код идет в продакшн, особенно на платформы с миллионами пользователей (как Reddit), последствия могут быть катастрофическими.
Решение Reddit — это предупреждение всему сообществу: если вы используете AI для генерации кода, вы обязаны проверять этот код на безопасность. Иначе платформы начнут вводить ограничения, которые сделают невозможным использование даже простых тегов.
Пример из реальной практики
В мае 2026 года один из популярных сабреддитов (r/learnprogramming) стал жертвой атаки. Пользователь попросил AI сгенерировать «интерактивный учебник по Python» и вставил результат в пост. AI использовал тег <details> с атрибутом open, а внутри — <img src=x onerror=alert(document.cookie)>. Модераторы не заметили, и пост провисел 4 часа, заразив более 12 000 уникальных посетителей. Хотя ущерб был минимальным (атакующий просто выводил alert), это показало уязвимость.
После этого инцидента Reddit ускорил внедрение политики, и теперь любой HTML-контент проходит через строгий фильтр. Если вы попытаетесь вставить даже <b>, система может запросить подтверждение по SMS или отклонить публикацию.
Будущее: что дальше?
Тренд на ограничение HTML будет только усиливаться. Уже сейчас:
- GitHub тестирует режим «Safe Commenting», где AI автоматически санирует HTML в обсуждениях.
- Stack Overflow ввел предупреждение при вставке кода, если он содержит потенциально опасные теги.
- Telegram ограничил использование HTML в каналах с большим количеством подписчиков.
Для разработчиков это означает, что нужно адаптироваться. Если вы используете Vibe Coding, обязательно добавляйте этап санитизации в свой пайплайн. Например, после генерации кода запускайте его через линтер безопасности (ESLint с плагином eslint-plugin-security или semgrep).
Также стоит пересмотреть архитектуру: вместо того чтобы позволять AI генерировать полный HTML, давайте ему генерировать только данные (JSON, Markdown), а HTML-шаблон будет статическим и безопасным на стороне сервера. Это подход, который используют многие современные фреймворки, такие как Next.js (с серверными компонентами) и SvelteKit.
Заключение
Фраза «So Reddit has decided that plain HTML is unsafe» — это не шутка и не перестраховка. Это реакция на реальную угрозу, вызванную массовым использованием AI-генерации кода без должного контроля безопасности. Для сообщества Vibe Coding это важный урок: скорость не должна идти в ущерб безопасности.
Если вы разработчик, который активно использует AI-ассистентов, начните внедрять практики безопасной генерации кода уже сегодня. Проверяйте каждый сгенерированный тег, используйте санитайзеры и настраивайте CSP. Иначе ваш проект может стать следующим, на кого будут показывать пальцем как на пример «небезопасного Vibe Coding».
Reddit сделал свой выбор. Теперь выбор за вами: адаптироваться или остаться в прошлом, где HTML считался безопасным.
Источники: официальный блог Reddit (reddit.com/r/redditsecurity, июль 2026), отчет State of AI Development 2026, выступление Джейн Холлоуэй на Black Hat 2026, документация DOMPurify и OWASP XSS Prevention Cheat Sheet.
Комментарии