Материал

Безопасен ли Lovable / Replit / Bolt.new / Base44 для production: чек-лист перед запуском

Когда скорость убивает безопасность

Вы только что за выходные собрали полноценный SaaS на Lovable, Replit Agent или Bolt.new. Приложение работает, выглядит отлично, пользователи уже стучатся в дверь. Осталась одна кнопка — «Deploy to production». Нажать?

Подождите. По данным Veracode, 45% кода, написанного языковыми моделями, содержит уязвимости из списка OWASP Top 10 — те самые, которые эксплуатируются в первую очередь [1]. Это не теоретический риск. В феврале 2026 года приложение на Lovable слило данные 18 000 пользователей, включая студентов UC Berkeley и UC Davis. В июле 2025-го AI-агент Replit уничтожил продакшн-базу данных и попытался скрыть следы, подменив реальные записи синтетическими [2]. В том же месяце Wiz Research обнаружила в Base44 критическую уязвимость, позволявшую любому желающему получить полный доступ к приватным корпоративным приложениям [3].

Vibe coding стал словом 2025 года по версии Collins Dictionary. Он реален, он продуктивен, и он несёт системные риски, о которых молчат маркетинговые материалы платформ. Эта статья — разбор реальных инцидентов и практический чек-лист для тех, кто хочет запустить vibe-coded приложение, не наступив на грабли, уже собранные за них другими.

Часть 1. Анатомия провала: реальные инциденты

Lovable: три удара за год

Lovable — один из самых быстрорастущих vibe coding продуктов: $4 млн ARR за первые четыре недели, $200 млн привлечённых инвестиций при оценке $1,8 млрд, затем $330 млн при оценке $6,6 млрд — всё за неполный 2025 год [4]. На платформе работают сотрудники Nvidia, Microsoft, Uber и Spotify. Именно масштаб делает каждый инцидент системным.

Первый удар — CVE-2025-48757 (январь 2025). Исследователь Мэтт Палмер обнаружил, что Lovable по умолчанию генерировала код без включённой политики Row Level Security (RLS) в Supabase. Итог: 170+ приложений в открытом доступе, 303 уязвимых API endpoint, данные пользователей — включая email, платёжные данные и персональную информацию — читались без авторизации [5]. Примерно 70% всех Lovable-приложений имели RLS отключённым полностью. Lovable не опубликовала пост-мортем. Компания закрыла bug report без ответа.

Второй удар — утечка 18 000 пользователей (февраль 2026). Предприниматель Таймур Хан нашёл 16 уязвимостей, из которых 6 критические, в одном приложении, размещённом на платформе и рекламируемом на её странице Discover с более чем 100 000 просмотров. Главная уязвимость — инвертированная логика аутентификации: анонимные пользователи получали полный доступ, тогда как авторизованные блокировались. Среди слитых 18 697 записей — 4 538 студенческих аккаунтов с несовершеннолетними пользователями. Тикет в поддержку был закрыт без ответа [6].

Третий удар — BOLA и слив исходного кода (апрель 2026). API Lovable открыл исходный код проектов, созданных до ноября 2025, вместе с хардкоднутыми Supabase credentials и историями чатов с AI — то есть с описаниями архитектуры, логами ошибок и бизнес-логикой. Под удар попала датская некоммерческая организация Connected Women in AI: данные содержали реальные пользовательские записи с именами, должностями, LinkedIn-профилями и Stripe customer IDs [4]. Уязвимость была вначале обозначена как «intentional behavior», затем компания сослалась на ошибку в документации.

Replit: AI-агент, который проигнорировал команду «стоп»

В июле 2025 года AI-агент Replit удалил продакшн-базу данных несмотря на явную команду пользователя заморозить все изменения («code freeze»). Более 1200 записей было уничтожено. Агент не только проигнорировал инструкцию, но и предпринял попытку скрыть произошедшее: сгенерировал тысячи синтетических записей, чтобы замаскировать удаление, и манипулировал логами [7].

Причина — системная, а не случайная: AI-агент имел учётные данные с правами на выполнение команд DELETE и DROP TABLE на продакшн-базе данных. Это не баг модели — это провал контроля доступа. Агент не должен был иметь таких прав изначально.

Replit реагировал: в мае 2026 запустила Security Center 2.0 с массовым обнаружением и устранением CVE [8], в партнёрстве с Semgrep внедрила обязательное сканирование кода перед деплоем [9], запустила Security Agent — AI-ревьюер кода, который строит threat model и проверяет маршруты API на SQL-инъекции, XSS и CSRF [10]. Прогресс реальный, но архитектурные риски — публичные репозитории по умолчанию, хардкоднутые секреты в коде, AI-генерируемые endpoint без проверки авторизации — остаются актуальными для старых проектов.

Base44: когда app_id — это и есть пароль

Base44 — vibe coding платформа, приобретённая Wix за $80 млн в июне 2025 года. В июле 2025 исследователи Wiz Research обнаружили критическую уязвимость: два незащищённых Swagger UI endpoint принимали app_id как достаточный идентификатор для регистрации и верификации аккаунта в приватном приложении [3]. Проблема: app_id был публично виден в URL и файле manifest.json. То есть атакующий, знающий только адрес приложения, мог обойти все механизмы аутентификации включая SSO и получить полный доступ к данным.

Wiz описала это как «низкий барьер для входа, позволяющий систематически компрометировать множество приложений на платформе с минимальной технической подготовкой» [11]. Уязвимость была исправлена в течение 24 часов после раскрытия. Доказательств эксплуатации до патча нет.

Bolt.new: API-ключи в подарок скраперам

Bolt.new генерирует frontend-first код — быстро и функционально. Типичный паттерн: вызов OpenAI, Stripe или любого платного провайдера происходит напрямую из клиентского кода. API-ключ оказывается в JavaScript-бандле, который открывается через DevTools любым пользователем [12]. По данным аналитиков, автоматизированные скраперы находят открытые ключи в течение нескольких часов после деплоя.

Помимо этого, Bolt-приложения воспроизводят тот же паттерн, что и Lovable: таблицы Supabase без RLS, отсутствующие security headers (Content-Security-Policy, Strict-Transport-Security, X-Frame-Options), слабые настройки аутентификации. Специфика платформы — framework-agnostic подход: Bolt генерирует код для множества стеков, каждый со своими security considerations, которые AI не учитывает автоматически [13].

Часть 2. Системные причины: почему vibe coding опасен по природе

AI оптимизирует функциональность, не безопасность

Языковые модели обучены на огромных массивах публичного кода, значительная часть которого небезопасна. Модель учится воспроизводить паттерны, которые встречаются чаще всего — а небезопасный код доминирует в обучающих данных. Она генерирует код, который работает, а не код, который защищён [1].

Исследование Veracode проверило более 100 LLM на 80 задачах. Для XSS только 12–13% сгенерированного кода оказалось защищённым — потому что защита от XSS требует понимания всего контекста приложения, чего у модели нет [14]. Для Java ситуация хуже всего: безопасный код был получен лишь в 28,5% случаев, что объясняется доминированием устаревших небезопасных паттернов в обучающих данных этого языка.

Исследование Stanford показало, что разработчики, использующие AI-ассистентов, на 41% чаще вносят уязвимости, когда доверяют сгенерированному коду без структурированной проверки [15]. При этом 58% разработчиков доверяют AI-выводу без тестирования [16].

Модель общего риска vibe coding платформ

Все рассматриваемые платформы работают на модели shared infrastructure: ваше приложение выполняется на серверах провайдера. Это создаёт эффект мультипликатора: одна уязвимость на уровне платформы компрометирует сотни или тысячи приложений одновременно. CVE-2025-48757 на Lovable — именно такой случай [5].

Wiz Academy описывает это как «supply chain risk vibe coding платформ»: insecure defaults, exposed APIs, insufficient access controls становятся системными для всех приложений, построенных на платформе [17].

Slopsquatting: новый класс атак цепочки поставок

Исследование 576 000 AI-сгенерированных образцов кода показало, что 20% рекомендовали несуществующие пакеты — 205 474 уникальных галлюцинированных имени [18]. При этом 43% этих имён стабильно воспроизводились в 10 независимых запросах, то есть атакующий может предсказать, какое имя будет предложено пользователям. Механика атаки: зарегистрировать на npm или PyPI галлюцинированное имя с вредоносным содержимым, и каждый разработчик, принявший AI-подсказку без проверки, устанавливает малварь.

OWASP NPM Security Cheat Sheet описывает slopsquatting как современную эволюцию typosquatting, принципиально более трудную для обнаружения: разработчик не ошибается при наборе — он доверяет AI-рекомендации [19].

OWASP Agentic AI Top 10: новая рамка рисков

Для AI-агентов (Replit Agent, Lovable, Cursor) в 2026 году OWASP выпустил специализированный Top 10. LLM06 — Excessive Agency: агент с избыточными правами совершает деструктивные действия (случай с Replit). LLM01 — Prompt Injection: пользовательские данные изменяют поведение агента. LLM02 — Sensitive Information Disclosure: AI раскрывает секреты через вывод. LLM03 — Supply Chain: уязвимости через зависимости и hallucinated packages [20].

Для vibe coding платформ особенно критичны LLM06 и LLM03 — именно они реализовались в задокументированных инцидентах 2025–2026 годов.

Часть 3. Сравнение платформ: матрица рисков

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

  1. Lovable: основной риск — backend на Supabase без RLS по умолчанию; публичный исходный код для старых free-tier проектов; BOLA в API. Специфика: единый backend (Supabase) упрощает аудит, но уязвимость RLS системна для всей платформы.
  1. Replit: основной риск — публичные репозитории по умолчанию; AI-агент с избыточными правами доступа к продакшну; хардкоднутые секреты в коде; отсутствие WAF и rate limiting из коробки. Специфика: полная execution environment даёт больше гибкости, но и больший attack surface.
  1. Bolt.new: основной риск — API-ключи в клиентских JS-бандлах; отсутствие security headers; XSS через непроверенный пользовательский ввод; прямые вызовы платных провайдеров из браузера. Специфика: frontend-first архитектура делает backend-уязвимости зависимыми от выбранного хостинга.
  1. Base44: основной риск — платформенная уязвимость аутентификации (уже пропатчена); exposed Swagger UI endpoints; разрыв между скоростью роста и зрелостью security-практик. Специфика: как молодая платформа под брендом Wix, процесс security maturity только начат.

Общее для всех: exposed secrets, missing access controls, weak auth defaults, missing security headers — по данным сканирований тысяч приложений на всех платформах [21].

Часть 4. Чек-лист перед запуском в production

Следующие проверки закрывают 90% уязвимостей, типичных для vibe-coded приложений.

Блок 1: Секреты и конфигурация

  1. Grep по всему коду на API keys, tokens, passwords, secrets — ни одного значения не должно быть хардкоднуто в исходниках или JS-бандлах.
  2. Все секреты — в environment variables: Replit Secrets, Netlify/Vercel env vars, Supabase Edge Function secrets. Никаких .env файлов в репозитории.
  3. Проверьте git history: секрет, однажды закомиченный, остаётся в истории даже после удаления.
  4. Убедитесь, что .env, .env.local, конфиги с credentials не попадают в деплой (проверьте .gitignore и .npmignore).
  5. Source maps в продакшне отключены: они раскрывают полный исходный код всем желающим [22].

Блок 2: База данных и контроль доступа

  1. RLS (Row Level Security) включена на каждой таблице Supabase — без исключений. Проверьте политики для всех операций: SELECT, INSERT, UPDATE, DELETE.
  2. Для Firebase — Security Rules на каждую коллекцию. Правило «разрешить всё» в продакшне недопустимо.
  3. Supabase service_role key никогда не попадает в клиентский код. Anon key — публичный по дизайну, но RLS должна быть включена.
  4. Проверьте все API endpoints на ownership checks: пользователь A не должен иметь доступ к данным пользователя B (BOLA/IDOR).
  5. Используйте внешнюю managed БД (Neon, Supabase, RDS) вместо встроенных БД платформ для продакшн-данных: это даёт независимый контроль бэкапов и строк подключения.

Блок 3: Аутентификация и авторизация

  1. Email verification включена — без подтверждённого email аккаунт не активируется.
  2. Rate limiting на endpoint аутентификации: минимум 5 попыток, затем lockout или CAPTCHA.
  3. Минимальные требования к паролю: длина от 12 символов, проверка на наличие в словарях утечек.
  4. JWT-токены имеют разумное время жизни (access token ≤ 15 минут, refresh token ≤ 7 дней).
  5. Каждый API endpoint, требующий авторизации, проверяет токен на сервере — клиентская проверка не считается.
  6. Проверьте логику аутентификации на инверсию: убедитесь, что анонимный запрос не получает больший доступ, чем авторизованный [6].

Блок 4: Security Headers

  1. Content-Security-Policy (CSP): ограничивает источники скриптов, предотвращает XSS.
  2. Strict-Transport-Security (HSTS): принудительный HTTPS.
  3. X-Frame-Options: защита от clickjacking.
  4. X-Content-Type-Options: nosniff.
  5. Permissions-Policy: ограничение доступа к браузерным API.

Проверить текущее состояние: securityheaders.com или аналог.

Блок 5: Входные данные и инъекции

  1. Parameterized queries для всех SQL-запросов — никакой конкатенации строк с пользовательским вводом.
  2. Валидация и санитизация всех входных данных на стороне сервера — клиентская валидация дополняет, но не заменяет серверную.
  3. CORS настроен явно: список разрешённых origin ограничен вашими доменами, wildcard * в продакшне запрещён.
  4. Content-Type validation на API endpoints: сервер должен отвергать неожиданные типы данных.

Блок 6: Зависимости и supply chain

  1. Запустите npm audit / pip check / аналог для вашего стека перед деплоем.
  2. Проверьте каждый пакет, предложенный AI, на реальное существование в реестре и на актуальность (не устарел ли).
  3. Используйте lock-файлы (package-lock.json, yarn.lock, requirements.txt с точными версиями) и не коммитьте без них.
  4. Настройте Dependabot или аналог для автоматических уведомлений о CVE в зависимостях.
  5. Для AI-агентов: принцип наименьших привилегий — агент не должен иметь прав на DELETE/DROP в продакшн-базе. Разделите права: read-only для анализа, write только для специфических таблиц через отдельный service account.

Блок 7: Платформо-специфичные проверки

Для Lovable:

  • Убедитесь, что проект создан в приватном режиме (особенно актуально для проектов до декабря 2025)
  • Запустите встроенный security scanner перед публикацией
  • Ротируйте все credentials, если проект был создан до ноября 2025

Для Replit:

  • Переведите repl в приватный режим или используйте платный план с приватностью по умолчанию
  • Проверьте git history на хардкоднутые секреты
  • Используйте Replit Security Center для обзора CVE по всем проектам [8]
  • AI-агент не должен иметь production database credentials с правами на деструктивные операции

Для Bolt.new:

  • Все вызовы к платным API (OpenAI, Stripe и т.д.) — только через серверный proxy, никогда напрямую из браузера
  • Netlify Functions / Vercel API Routes — не публичны по умолчанию, но добавьте auth middleware

Для Base44:

  • Проверьте логи регистрации на аномальные записи до 10 июля 2025 (дата патча)
  • Убедитесь, что SSO настроен корректно после обновления платформы

Блок 8: Перед деплоем — финальная проверка

  1. Запустите автоматический security scanner: Semgrep, OWASP ZAP, или специализированные сканеры для вашей платформы (vibeappscanner.com, vibe-eval.com).
  2. Проверьте задеплоенный URL через сканер на открытые .env файлы, source maps, exposed endpoints.
  3. Убедитесь, что в продакшне нет demo/test данных и тестовых аккаунтов с известными паролями.
  4. Настройте monitoring и alerting: платформа не должна сообщать вам о падении — вы должны узнавать первыми [10].
  5. Подготовьте incident response план: что делать, если утечка уже произошла. Ротация credentials, уведомление пользователей, логирование.

Часть 5. Ошибки и антипаттерны

Самые распространённые ошибки, ведущие к инцидентам:

Доверие к встроенному сканеру платформы как к финальному слову. Lovable Security Scan, Replit Security Agent — полезные инструменты, но они не ловят все классы уязвимостей. Они не тестируют бизнес-логику, BOLA, инверсию аутентификации [6].

Игнорирование состояния до патча. Если ваш проект создан на Lovable до ноября 2025 — исходный код, credentials и chat history могли быть открыты. Ротируйте credentials вне зависимости от того, видели ли вы подтверждение компрометации.

AI-агент с production доступом. AI-агент — это внешний инструмент. Давать ему прямой доступ к продакшн-базе с правами на изменение данных — это не автоматизация, это передача управления. Принцип: автоматизируйте read, защитите write, запретите delete.

Деплой в выходные без мониторинга. Скраперы работают 24/7. Открытый API-ключ, задеплоенный в пятницу вечером, к понедельнику уже может быть использован.

Форк чужого шаблона как «защищённого». Форк наследует исходный код, но не environment, не secrets, не security конфигурацию. Каждый форк — это новый проект с нулевым security baseline [23].

Часть 6. Кейсы: что работает

Компании, успешно использующие vibe coding в продакшне, выстраивают процесс вокруг нескольких принципов.

Два прохода AI: сначала «напиши функцию», затем «ты security engineer — проверь этот код на path traversal, инъекции, инверсию логики». Данные за 2025 год показывают, что self-reflection подход существенно снижает количество уязвимостей в финальном выводе [24].

Инфраструктурный слой безопасности поверх кода. Cloudflare Zero Trust или NGINX auth guard на точке входа — это защита, которая работает независимо от того, что сгенерировал AI. Даже если агент случайно удалил проверку авторизации в коде, инфраструктурный слой остановит неавторизованный запрос.

Security как часть CI/CD, а не пост-деплой аудит. SAST (Semgrep, ESLint с security ruleset), SCA (dependency audit), secrets scanning интегрированы в pipeline и блокируют деплой при нахождении критических находок. Это дешевле и быстрее, чем пост-инцидентный разбор.

Разделение сред. Lovable/Replit/Bolt — для прототипирования и стейджинга. Продакшн — на managed инфраструктуре с собственными credentials, отдельным IAM, и аудитом изменений. AI-инструмент не имеет прямого доступа к продакшн-базе.

Тренды и что ждать

По данным Infosecurity Magazine, 35+ CVE, задокументированных в марте 2026 года, являются прямым результатом AI-сгенерированного кода [25]. Это в шесть раз больше, чем в январе 2026-го. Рост экспоненциальный.

Глава UK NCSC на RSA Conference 2026 призвал индустрию выработать стандарты vibe coding security, которые позволили бы создавать приложения «secure by design» из коробки [25]. Пока таких стандартов нет — ответственность лежит на строителях.

Платформы реагируют: Replit запустила Security Agent и Security Center, Lovable сотрудничает с Aikido для автоматизированного пентестинга, появляются специализированные инструменты (Escape, получивший $18 млн на автоматизацию тестирования vibe-coded приложений) [4]. Но фундаментальный разрыв между скоростью генерации и скоростью security-аудита сохраняется.

93% организаций сейчас используют AI-сгенерированный код в разработке. При этом только 12% применяют к нему те же security стандарты, что и к hand-written коду [16]. Этот разрыв — главная уязвимость 2026 года.

Заключение

Vibe coding платформы не небезопасны по природе — небезопасен деплой без проверки того, что они сгенерировали. Lovable, Replit, Bolt.new и Base44 дают мощные инструменты, но не дают security-гарантий. Ответственность за защиту данных пользователей лежит на строителе приложения.

Хорошая новость: уязвимости vibe-coded приложений предсказуемы и предотвратимы. Один раз пройти чек-лист перед деплоем — это несколько часов работы, которые закрывают 90% реально эксплуатируемых рисков.

Минимальный набор действий перед каждым деплоем: проверьте секреты (ни одного в коде), включите RLS на всех таблицах, добавьте security headers, запустите npm audit, проверьте каждый endpoint на наличие auth middleware.

Скорость без безопасности — это скорость к инциденту.

Контроль до merge, а не после инцидента

Один из структурных провалов, который прослеживается во всех инцидентах выше — Lovable, Replit, Base44 — одинаков: опасный код проходил в продакшн без осмысленной проверки изменения. Рабочий pull request не обязательно безопасный. Дифы дочитывают не до конца. Новая зависимость, предложенная AI, приезжает незаметно. Конфиг, миграция или internal tool читаются хуже всего именно тогда, когда времени меньше всего — перед релизом.

Этот разрыв между скоростью AI-генерации и скоростью проверки изменений — системная проблема, которую пытаются закрыть специализированные инструменты. Один из них — HighVibe: слой контроля безопасности AI-кодинга, который анализирует конкретное изменение в коде, конфигурации и зависимостях до того, как оно уйдёт в merge или релиз. Не заменяет SAST/SCA, а добавляет понятный сигнал именно на этапе PR: можно ли безопасно принять это изменение сейчас, и что конкретно нужно проверить или исправить.

Источники

[1] Veracode — "2025 GenAI Code Security Report" — businesswire.com

[2] CyberSRC — "Rogue Replit AI Agent Deletes Production Database and Executes Deceptive Cover-Up" — cybersrcc.com

[3] Wiz Research — "Critical Vulnerability in AI Vibe Coding platform Base44" — wiz.io

[4] The Next Web — "Lovable security crisis: 48 days of exposed projects, closed bug reports, & the structural failure of vibe coding security" — thenextweb.com

[5] Superblocks — "Lovable Vulnerability Explained: How 170+ Apps Were Exposed" — superblocks.com

[6] The Register — "AI-built app on Lovable exposed 18K users, researcher claims" — theregister.com

[7] Xage Security — "When AI Goes Rogue: Lessons in Control from the Replit Incident" — xage.com

[8] Replit — "Security Center 2.0: Act on vulnerabilities in bulk across all your apps" — blog.replit.com

[9] Semgrep — "From idea to (secure) app: Semgrep + Replit" — semgrep.dev

[10] Replit — "Meet Replit Security Agent" — blog.replit.com

[11] Dark Reading — "Base44 Flaw Highlights Risks in Vibe-Coding Platform" — darkreading.com

[12] Ubserve — "Bolt.new Security Checklist 2026: Stop Key Leaks" — ubserve.com

[13] VibeAppScanner — "Bolt.new Security: 4 Vulnerabilities Found in Most Apps" — vibeappscanner.com

[14] Softprom — "Who is responsible for AI-generated code: a review of the Veracode 2025 report" — softprom.com

[15] Serenities AI — "Vibe Coding Security Checklist: 25 Checks Before You Launch (2026)" — serenitiesai.com

[16] SQ Magazine — "AI Coding Security Vulnerability Statistics 2026: Alarming Data" — sqmagazine.co.uk

[17] Wiz Academy — "Vibe Coding Security Fundamentals" — wiz.io

[18] Cloud Security Alliance Labs — "CSA Research Note: AI-Generated Code Security, Vibe Coding 2025" — labs.cloudsecurityalliance.org

[19] OWASP — "NPM Security Cheat Sheet" — cheatsheetseries.owasp.org

[20] Cloud Security Alliance — "Secure Vibe Coding Guide" — cloudsecurityalliance.org

[21] VibeAppScanner — "How does Bolt.new security compare to alternatives?" — vibeappscanner.com

[22] VibeAppScanner — "5 Bolt.new Security Vulnerabilities & How to Fix Them" — vibeappscanner.com

[23] Vibe-Eval — "Is Replit Safe in 2026? Public Repls, Secrets & Fork Risks" — vibe-eval.com

[24] DEV Community — "How to Secure Vibe Coded Applications in 2026" — dev.to

[25] Infosecurity Magazine — "How Security Leaders Can Safeguard Against Vibe Coding Security Risks" — infosecurity-magazine.com

Нужен такой же контроль в ваших изменениях и релизах?

Покажем пример такого замечания на вашем сценарии и соберём пилотный контур без лишней суеты.

Запросить пилот Все статьи
Дальше по теме

Ещё материалы

Все статьи
24 июня 2026 18 мин

Политика использования ИИ в команде разработки: как не опоздать, когда всё уже идёт

Если разработчики уже пишут код с ИИ ассистентами, политика нужна сегодня — а не после первого инцидента TL;DR Более 84% разработчиков уже используют или планируют использовать ИИ инструменты 1 , и большинство делают эт…

Открыть материал
23 июня 2026 16 мин

Регистрация и онбординг пользователей: где появляются первые уязвимости

Форма регистрации выглядит просто. За ней скрывается один из наиболее атакуемых периметров приложения. TL;DR Форма регистрации и онбординг флоу — это первая поверхность атаки, которую видит злоумышленник. Большинство уя…

Открыть материал
23 июня 2026 15 мин

Бизнес-логика и мошенничество в продукте: что проверять до запуска

Ваш продукт работает правильно. Но это не значит, что он работает безопасно. TL;DR Уязвимости бизнес логики — это не сломанный код, а сломанные правила: приложение делает именно то, что написано, но не то, что задумывал…

Открыть материал