flawopen.com/Каталог/Справочники
Справочники по безопасности для разработчиков
Используйте эти материалы для проверки предположений о безопасности фреймворков, ORM, аутентификации, serverless-приложений и ИИ-агентов. В каждом руководстве объяснение и исправление связаны с техническими деталями.
- Claude Code MemoryTrap: отравление памяти ИИ — flawopen.com
Раскрытие Cisco MemoryTrap: постоянная память Claude Code, исправление в v2.1.50 и меры защиты агентов.
- Песочницы ИИ-агентов: контейнеры и микро-ВМ
Сравнение границ изоляции контейнеров, gVisor и микро-ВМ для ИИ-агентов.
- Права инструментов ИИ-агентов
Как снизить избыточные полномочия ИИ-агентов с помощью узких инструментов, авторизации пользователя и минимальных прав.
- ИИ-боты PR: защита от SSRF — flawopen.com
Как недоверенный текст pull request может влиять на инструменты ИИ и как ограничить права бота и сетевой доступ.
- Риски безопасности addJavascriptInterface в Android
Узнайте, как мосты WebView открывают нативные методы всем frame, когда XSS достигает функций приложения и как изолировать недоверенные страницы.
- Защита Angular от XSS: безопасные значения и обходные API
Angular экранирует интерполяцию и очищает HTML- и URL-привязки. Узнайте, где bypassSecurityTrust* отключает защиту и как проверять XSS-sink.
- XSS из-за MIME sniffing: Content-Type и nosniff
Узнайте, как MIME sniffing может превратить загруженный файл в документ браузера, что делает nosniff и как безопасно отдавать файлы.
- Безопаснее ли strncpy(), чем strcpy()?
В C strncpy() снижает один риск по сравнению с strcpy(), но не гарантирует нулевой терминатор. Узнайте, как проверять snprintf и strlcpy.
- CSP и экранирование вывода: нужны ли оба?
Контекстное кодирование предотвращает XSS, а CSP ограничивает часть последствий при пропуске. Узнайте, как сочетать эти меры.
- CSRF-токен для GET: когда он нужен?
Безопасный GET не должен менять состояние. Узнайте, где нужен CSRF-токен для небезопасных методов и как исправить старые GET с побочным эффектом.
- CWE и CVE: в чём разница?
CWE и CVE: в чём разница?: CWE — это категория, тип бага, например «SQL-инъекция» (CWE-89). CVE — это экземпляр, одно конкретное задокументированное появление
- Безопасен ли dangerouslySetInnerHTML в React?
React экранирует текст JSX, но dangerouslySetInnerHTML разбирает HTML. Узнайте, как проверить эту точку XSS и безопасно выводить rich text.
- Dependency Confusion: риски и защита
Как неоднозначный источник пакета приводит к неожиданной зависимости и как политики реестров, lock-файлы и CI снижают риск.
- Django ORM и SQL Injection: безопасные шаблоны
QuerySet в Django параметризует значения. Узнайте, как проверять raw SQL, динамические выражения и структуру запросов.
- Доступ к сокету Docker: риски и защита
Доступ к сокету демона Docker может предоставить полномочия самого демона. Разберём ограничения, риски capabilities и более безопасные настройки.
- SQL-инъекция в Doctrine ORM: безопасные запросы
Связывайте значения DQL и SQL параметрами. Узнайте, где выражения QueryBuilder остаются уязвимыми и как безопасно разрешить сортировку.
- Достаточно ли DOMPurify для безопасного innerHTML?
DOMPurify защищает HTML в правильной точке вставки. Узнайте о границах контекста, изменении после очистки, Trusted Types и проверках для production.
- .NET BinaryFormatter: риски и переход
Microsoft считает BinaryFormatter небезопасным. Узнайте о рисках десериализации, поведении .NET 9 и вариантах миграции.
- Защищён ли .NET XmlReader от XXE?
XmlReader по умолчанию запрещает DTD. Узнайте, что изменилось в .NET Framework 4.5.2, чем отличаются устаревшие API и как безопасно разбирать XML.
- EF Core FromSqlRaw: безопасный SQL с параметрами
Передавайте в FromSqlRaw отдельные параметры, а не склеенные данные. Разбор FromSqlInterpolated, версий EF Core и динамического SQL.
- Node.js exec() и execFile(): различия и безопасность
Сравнение exec() и execFile() в Node.js: shell, аргументы, инъекция команд и выбор API.
- FastAPI и SQL Injection: границы защиты Pydantic
FastAPI проверяет входные данные, но безопасность SQL зависит от запроса. Параметры SQLAlchemy и безопасные динамические идентификаторы.
- SSRF в Node.js fetch(): безопасная загрузка URL
Серверный fetch() может обращаться к адресам, выбранным пользователем. Разбираем фиксированные цели, перенаправления, DNS и сетевые ограничения.
- SSTI в FreeMarker и Velocity: безопасные шаблоны
Контролируйте источник шаблонов, ограничивайте доступные Java-объекты и изолируйте рендеринг, чтобы снизить риск SSTI в FreeMarker и Velocity.
- Инъекция скриптов GitHub Actions: безопасный ввод
Контекстные значения GitHub могут стать командами shell при вставке в run. Разбираем env, права токена и pull_request_target.
- GORM Raw SQL: защита от SQL-инъекций в Go
Используйте связанные параметры в GORM Raw. Узнайте, почему значения безопасны, идентификаторам SQL нужны списки разрешений и как проверять запросы.
- Достаточно ли экранировать кавычки от SQL Injection?
Нет. Параметризованные запросы отделяют данные от SQL; экранирование зависит от СУБД и ненадёжно. Для идентификаторов используйте списки разрешённых значений.
- Достаточно ли ORM, чтобы предотвратить SQL-инъекции?
Достаточно ли ORM, чтобы предотвратить SQL-инъекции?: для стандартного API запросов — да. У каждого популярного ORM есть и лазейка для сырого SQL, и она несёт
- XXE в Java: безопасна ли DocumentBuilderFactory?
JDK-парсеры ограничивают часть атак, но не блокируют внешний доступ по умолчанию. Настройки безопасности и различия провайдеров.
- Безопасность ObjectInputStream в Java: защита десериализации
Недоверенные данные Java могут запускать gadget-поведение при readObject(). Разбираем фильтры, безопасные форматы и старые потоки.
- Java Runtime.exec() и Command Injection: в чём разница?
Runtime.exec(String) не запускает shell, но ввод может изменить аргументы. Используйте ProcessBuilder и проверяйте каждое значение.
- ReDoS в Node.js: регулярные выражения и CVE-2026-83606
Как backtracking регулярных выражений блокирует Node.js: случай CVE-2026-83606 и исправления.
- Безопасна ли функция Jinja2 render_template_string()?
Используйте литеральный шаблон и передавайте пользовательские данные через контекст. Разберитесь в SSTI, автоэкранировании и CVE-2024-56201.
- Вызывает ли JSON.parse() загрязнение прототипа?
JSON.parse() не загрязняет прототипы. Риск появляется из-за небезопасного слияния и записи управляемых ключей.
- JSON.parse() безопаснее, чем eval()?
Почему JSON.parse() разбирает ввод как данные, как eval() может его выполнить и что делает callback reviver.
- JWT в localStorage или cookie HttpOnly: что безопаснее? — flawopen.com
Архитектурное сравнение JWT в localStorage и cookie HttpOnly SameSite: кража токена через XSS, компромиссы CSRF и рекомендуемые архитектуры аутентификации.
- Защищает ли Knex.js от SQL-инъекций?
Knex связывает значения. Используйте bindings в knex.raw() и разрешенный список для динамических идентификаторов.
- Защищён ли lodash.merge() от загрязнения прототипа?
Исправления Lodash зависят от функции и версии. Проверьте диапазоны, актуальную исправленную версию и безопасный разбор данных.
- Защищает ли Markdown от XSS?
Markdown не делает HTML безопасным автоматически. Узнайте, когда сырой HTML проходит дальше и как безопасно очищать результат.
- Mass assignment: риски и безопасные списки полей
Mass assignment позволяет запросу менять поля, которыми пользователь не должен управлять. Списки разрешений и авторизация.
- Безопасность MCP: границы инструментов | FlawOpen
Изучите границы доверия MCP и ограничьте локальные инструменты, права и согласие пользователя, чтобы предотвратить утечку данных.
- MyBatis ${} и #{}: защита от SQL Injection
В MyBatis #{} связывает значения через JDBC, а ${} вставляет текст SQL напрямую. Безопасная передача значений и список идентификаторов.
- MySQLi и PDO: безопасные подготовленные запросы
И MySQLi, и PDO могут предотвращать SQL Injection с подготовленными запросами. Сравнение параметров, драйверов и безопасных шаблонов.
- Newtonsoft.Json TypeNameHandling: безопасная настройка?
Json.NET читает имена CLR из $type. Для недоверенного JSON оставьте TypeNameHandling равным None; иначе проверяйте типы строгим binder.
- Next.js Server Actions CSRF: Origin и безопасная настройка
Как Next.js проверяет Origin, чем опасно доверие к прокси и allowedOrigins и как авторизовать каждое действие.
- Утечка состояния serverless: изоляция данных запросов
Как повторное использование serverless-среды может открыть старые данные и как изолировать идентичность и состояние каждого запроса.
- Защищает ли NHibernate от SQL-инъекций?
Параметры HQL в NHibernate отделяют значения от синтаксиса. Узнайте о рисках интерполяции и динамических идентификаторов.
- Риск command injection в Node.js exec()
Node.js exec() запускает shell. Узнайте, когда недоверенный ввод приводит к command injection и как execFile() с проверкой меняет этот путь.
- Что такое параметризованный запрос?
Что такое параметризованный запрос?: параметризованный запрос — это как заполнить бланк с подписанными полями вместо того, чтобы писать всё письмо от руки. База данных пол
- Защищает ли Prisma $queryRaw от SQL-инъекций?
Prisma параметризует значения в tagged template. Узнайте, когда raw-запросы безопасны и почему SQL-идентификаторам нужен allowlist.
- Безопасна ли интерполяция в Rails where()?
Интерполяция данных запроса в where() может привести к SQL Injection. Используйте hash-условия или связанные параметры.
- Безопасность ИИ-агентов: инструменты и изоляция
Защитите инструменты ИИ-агентов авторизацией пользователя, подтверждением важных действий и изоляцией. Поймите ограничения песочницы и сети.
- Защищает ли Sequelize query() от SQL-инъекций?
Raw-запросы Sequelize требуют отдельных параметров. Узнайте разницу между replacements, bind и SQL-идентификаторами.
- Защищает ли SQLAlchemy text() от SQL-инъекций?
SQLAlchemy text() принимает SQL-текст; передавайте значения через execute(). Узнайте о рисках интерполяции и динамических идентификаторов.
- SSRF и облачные метаданные: риски и защита
Как SSRF обращается к облачным метаданным и как контроль провайдера, минимальные привилегии и фильтрация исходящего трафика снижают риск.
- Защищает ли Svelte от XSS по умолчанию?
Svelte экранирует обычные текстовые выражения. Узнайте, почему для {@html} нужен доверенный или очищенный HTML и как найти его использование.
- Защищает ли TypeORM QueryBuilder от SQL-инъекций?
TypeORM связывает параметры QueryBuilder. Узнайте, почему нужно проверять интерполированные условия, raw SQL и динамические идентификаторы.
- Риск XSS при использовании Vue v-html
Vue экранирует текст {{ }} по умолчанию, но v-html выводит сырой HTML. Узнайте о риске XSS, безопасной обработке rich text и аудите файлов .vue.
- Cosign GHSA-fx35-mq7g-6g98: обход проверки
Как старые bundle Cosign обходили проверку identity и как исправленные версии защищают проверку в CI.
- NoSQL-инъекция в MongoDB: безопасные фильтры
Узнайте, как непроверенный JSON меняет фильтры MongoDB, как проверять типы и тестировать исправление.
- SQL Injection при числовых ID: риск?
Даже числовой ID опасен, если его вставляют в запрос форматированием строки. Разберитесь в риске и используйте параметры.
- Object.assign() и Prototype Pollution: что безопасно?
Object.assign() может изменить прототип цели через __proto__. Узнайте отличие от spread и защитите глубокое слияние.
- Node.js path.join() не защищает от Path Traversal
path.join() нормализует пути, но допускает ..; проверьте попадание в базовый каталог и учитывайте символические ссылки.
- PHP include() и пути, заданные пользователем
Когда include() раскрывает файлы или выполняет код, почему RFI зависит от конфигурации и как помогает фиксированный список.
- PHP == и сравнение magic hash
PHP 8 численно сравнивает две числовые строки: хэши 0e могут совпасть. Проверяйте типы; для секретов используйте hash_equals().
- PHP unserialize() и недоверенные данные
PHP запрещает unserialize() для недоверенных данных. Используйте JSON; проверяйте подлинность доверенных данных до разбора.
- Защита от Path Traversal в Python os.path.join()
Как os.path.join() обрабатывает абсолютные пути и ..: разрешайте путь и проверяйте границы с commonpath().
- Python pickle.load(): риск недоверенных данных
Python pickle может выполнять код при загрузке. Узнайте о CWE-502 и замените недоверенные данные на проверенный JSON.
- Безопасность Python XML и XXE: ElementTree, Expat, lxml
Защищает ли ElementTree от XXE? Разбор рисков версий Expat, настроек lxml и безопасной обработки недоверенного XML.
- Что такое ReDoS (катастрофический возврат)?
Как неоднозначные регулярные выражения приводят к отказу в обслуживании и как безопасно ограничить сопоставление.
- Безопасен ли Ruby YAML.load? Версии Psych и safe_load
Проверьте версию Psych, используйте safe_load и не загружайте недоверенные YAML или Marshal через небезопасные API.
- Безопасен ли Rust с блоком unsafe?
Как unsafe-код Rust нарушает инварианты памяти, почему Iterator::size_hint не гарантирует безопасность и как избежать выхода за границы буфера.
- Заменяет ли SameSite=Strict CSRF-токены?
Узнайте, от чего защищают SameSite=Strict и Lax, где проходят их границы между поддоменами и когда нужны CSRF-токены.
- Предотвращает ли проверка sqlx при компиляции SQL-инъекции?
Что проверяет query!, как связанные параметры предотвращают SQL-инъекции и когда безопасен query().bind().
- Что такое серверная инъекция в шаблон?
Как возникает SSTI, почему её последствия зависят от движка и как отделить пользовательские данные от кода шаблона.
- Защищают ли хранимые процедуры от SQL-инъекций?
Хранимые процедуры защищают от SQL-инъекций только при связывании параметров; разберём динамический SQL и идентификаторы.
- Опасна ли загрузка SVG из-за XSS?
Когда сценарии SVG выполняются и как очищать, растрировать и изолировать загружаемые файлы.
- WKWebView: безопасен ли HTML?
WKWebView отображает HTML вместе со скриптами. Узнайте, когда очищать содержимое и как защитить нативный мост.
- Отражённый, хранимый и DOM-based XSS: в чём разница?
Сравнение отражённого, хранимого и DOM-based XSS и способы устранить каждую проблему в точке вывода.
- Что такое уязвимость Zip Slip?
Как поддельные имена файлов в ZIP-архиве позволяют выйти из каталога распаковки и как проверять каждый путь.