惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Cisco Blogs
Scott Helme
Scott Helme
Know Your Adversary
Know Your Adversary
NISL@THU
NISL@THU
C
Cyber Attacks, Cyber Crime and Cyber Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Schneier on Security
I
Intezer
Spread Privacy
Spread Privacy
AWS News Blog
AWS News Blog
V
Vulnerabilities – Threatpost
Cloudbric
Cloudbric
V2EX - 技术
V2EX - 技术
Google Online Security Blog
Google Online Security Blog
L
Lohrmann on Cybersecurity
Recent Commits to openclaw:main
Recent Commits to openclaw:main
L
LINUX DO - 热门话题
S
Secure Thoughts
T
The Exploit Database - CXSecurity.com
博客园 - 【当耐特】
Recent Announcements
Recent Announcements
Security Archives - TechRepublic
Security Archives - TechRepublic
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
K
Kaspersky official blog
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
Latest news
Latest news
B
Blog
F
Full Disclosure
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
L
LangChain Blog
GbyAI
GbyAI
Last Week in AI
Last Week in AI
S
Security Affairs
Apple Machine Learning Research
Apple Machine Learning Research
N
Netflix TechBlog - Medium
Security Latest
Security Latest
Vercel News
Vercel News
Y
Y Combinator Blog
G
GRAHAM CLULEY
S
Securelist
T
Troy Hunt's Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
雷峰网
雷峰网

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Веб vs Мобилка: кто в опасности? Сравниваем безопасность двух миров
codesrc · 2026-05-18 · via Все публикации подряд на Хабре

Уровень сложностиСредний

Время на прочтение7 мин

Охват и читатели33

Обзор

Спойлер: оба, но по-разному - и это важно понимать.

Каждый раз, когда слышим «у нас все нормально с безопасностью, мы же не банк», что-то внутри сжимается. За этой фразой обычно стоят токены аутентификации в SharedPreferences, SQL-запросы без параметризации и Firebase без правил доступа. Эта статья - попытка честно сравнить два мира, найти точки пересечения и разобраться, почему одни проблемы одинаковые, а другие - принципиально разные.

Исходные данные: OWASP Top 10 Web 2025, OWASP Mobile Top 10 2024, статистика NVD/CVE-базы, данные реальных пентестов, IBM Cost of a Data Breach 2024.

Масштаб проблемы: цифры, которые отрезвляют

По данным OWASP и NVD за последние годы картина не меняется кардинально - меняются только детали.

Инъекции стабильно лидируют по числу CVE среди всех веб-категорий. Проблема существует с 90-х годов, описана в каждом учебнике по безопасности - и все равно встречается в production-приложениях ежедневно.

Сбои аутентификации - credential stuffing, session fixation, отсутствие MFA на критичных операциях. По данным OWASP, уязвимости аутентификации встречаются в десятках тысяч приложений ежегодно.

Криптографические ошибки - MD5 для паролей, ключи в коде, TLS 1.0 на продакшене. Причем правильные решения существуют и хорошо задокументированы уже много лет.

Нарушения контроля доступа (веб) - по данным OWASP, выявляются в более чем 90% протестированных приложений. Именно поэтому эта категория занимает первое место в Web Top 10 третий рейтинг подряд.

По мобильным приложениям картина не радостнее. Исследования в рамках OWASP Mobile Security Testing Guide показывают:

  • Большинство мобильных приложений содержат хотя бы одну уязвимость из Mobile Top 10 

  • Небезопасное хранение данных (токены в незащищенных хранилищах, незашифрованные базы) - одна из самых частых находок при аудитах. 

  • При статическом анализе APK захардкоженные API-ключи обнаруживаются значительно чаще, чем хотелось бы думать.

Последствия реальные: утечки персональных данных, финансовые потери, регуляторные штрафы (152-ФЗ, GDPR). По данным IBM Cost of a Data Breach 2024, средняя стоимость утечки данных составила 4,88 миллиона долларов, а среднее время обнаружения и сдерживания взлома - около 194 дней. И это без учета репутационного ущерба.

OWASP Top 10: детальное сравнение

Прежде чем идти в детали, посмотрим на оба списка рядом и сразу найдем общее.

OWASP Top 10: сравнение

OWASP Top 10: сравнение

Несмотря на разные платформы, веб и мобильные приложения страдают от одного и того же набора фундаментальных уязвимостей: слабый контроль доступа и ошибки аутентификации позволяют злоумышленникам действовать от чужого имени или получать данные без прав; неправильная криптография - будь то слабые алгоритмы или незашифрованное локальное хранилище - делает чувствительные данные читаемыми; небезопасная конфигурация открывает лишние точки входа на обеих платформах; проблемы цепочки поставок означают, что стороннее ПО становится вектором атаки задолго до попадания в продакшн; наконец, недостаточная проверка ввода и инъекции остаются хронической проблемой везде, где пользовательские данные попадают в интерпретатор без санации - неважно, браузер это или мобильное приложение.

В вебе уникальные угрозы сосредоточены вокруг серверной логики и наблюдаемости: ненадежный дизайн означает, что архитектурные просчеты закладываются еще на этапе проектирования бизнес-процессов и не поддаются патчингу без переписывания; сбои целостности ПО и данных бьют по CI/CD-пайплайнам и механизмам автообновления; а отсутствие нормального логирования и мониторинга делает атаку невидимой - злоумышленник может месяцами находиться внутри периметра, пока никто не смотрит в логи. Неправильная обработка исключений довершает картину: стектрейсы и внутренние сообщения об ошибках утекают в браузер, давая атакующему карту внутренней инфраструктуры.

В мобилке угрозы смещаются в сторону самого устройства и экосистемы приложения: небезопасное взаимодействие через незащищенные IPC-каналы, deep links и межпроцессные интенты открывает атаки, которых в вебе просто не существует; недостаточная защита бинарного кода позволяет реверс-инжинирить приложение, извлекать захардкоженные ключи и переупаковывать APK с вредоносной начинкой; недостаточный контроль конфиденциальности отражает специфику мобильных разрешений - геолокация, камера, контакты утекают через сторонние SDK незаметно для пользователя. Все это проблемы, которые веб-разработчик даже не рассматривает как вектор угрозы.

Архитектура определяет угрозы

Почему списки различаются - понятнее становится, когда смотришь на архитектуру.

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

При этом бэкенд общий - и мобильные, и веб-клиенты работают с одним API. Уязвимость на сервере опасна для обоих.

Общие уязвимости: где риски одинаковы

1. Аутентификация и авторизация

Это самый большой пласт проблем, одинаково актуальный для обеих платформ. Типичные ошибки:

Ссылка на код: h

Ссылка на код тут

IDOR - изменение чужих данных (мобильный API):

Ссылка на код тут

Ссылка на код тут

Безопасное управление сессией (PHP):

Ссылка на код тут

Ссылка на код тут

2. Инъекции

Встречаются везде, где есть пользовательский ввод и интерпретатор.

SQL-инъекция (Python):

Ссылка на код тут

Ссылка на код тут

XSS (JavaScript/PHP):

Ссылка на код тут

Ссылка на код тут

Инъекция в WebView (Android/Kotlin) - пересечение веб и мобилки:

Ссылка на код тут

Ссылка на код тут

3. Небезопасные зависимости (Supply Chain)

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

Как проверять зависимости (SCA - Software Composition Analysis)

Небезопасные зависимости легко ловить через SCA-подход - просто сканируйте дерево пакетов. В JS/Node.js запускайте npm audit, в Python - pip-audit, а в PHP - используйте встроенную команду composer audit или внешнюю утилиту local-php-security-checker. Добавьте Dependabot в репозиторий для авто-обновлений и настройте CI/CD так , чтобы сборка падала при High/Critical уязвимостях - это сильно снижает риски и дает спокойствие. Попробуйте на своем проекте, ждем результат.

Специфика мобильных приложений

Локальное хранилище: иерархия безопасности

Самая частая ошибка в мобильной разработке - хранить чувствительное там, куда доберется любой с рутованным телефоном.

Правильное хранение токена в Android (Kotlin) с использованием EncryptedSharedPreferences:

Ссылка на код тут

Ссылка на код тут

iOS - Keychain (Swift):

Ссылка на код тут

Ссылка на код тут

Certificate Pinning: защита сетевого трафика

Без pinning любой, у кого есть доступ к сети (или само устройство), может перехватить трафик через прокси.

Android Network Security Config (без кода):

Ссылка на код тут

Ссылка на код тут

Защита бинарного кода: уникальная мобильная проблема

В вебе исходники на сервере недоступны. В мобилке - APK можно скачать из магазина, декомпилировать через jadx и читать код почти как исходник на Java.

Специфика веб-приложений

Небезопасная конфигурация: инфраструктурные грехи

С ростом сложности инфраструктуры (Kubernetes, облако, микросервисы) неправильная конфигурация стала #2 в OWASP Web 2025. Примеры из реальной жизни:

Минимальный набор заголовков безопасности (Express.js):

Ссылка на код тут

Ссылка на код тут

Ненадежный дизайн: что не починишь рефакторингом

Это категория, которая появилась в OWASP 2021 и остается - потому что проблема реальная. Некоторые уязвимости возникают не из-за плохого кода, а из-за плохих архитектурных решений.

Пример: если система принимает цену товара от клиента, никакой input validation не поможет - нужно менять дизайн. Если механизм восстановления пароля основан на «секретных вопросах» - это дизайнерский провал.

Платформы: что дают, чего не дают

Выводы

Проблема не в платформе, а в подходе. Большинство уязвимостей - не экзотика. Хардкод ключей, отсутствие валидации, слабое хеширование - они существуют не потому что разработчики не знают как правильно, а потому что «работает же, потом поправим».

Бэкенд - общая точка ответственности. Мобильное приложение и веб-сайт могут работать с одним API. Если API уязвим к IDOR - оба клиента уязвимы. Безопасность серверной части важнее защиты конкретного клиента.

Мобилка сложнее с точки зрения клиентской безопасности. Разработчику веба не нужно думать о декомпиляции своего кода или краже данных при физическом доступе к устройству. У мобильного разработчика эта ответственность есть - нужно выбирать правильные хранилища, шифровать данные, защищать бинарник.

Supply chain - новая реальность. И в вебе (npm), и в мобилке (CocoaPods, Maven) зависимости - это внешний код, которому мы доверяем. Автоматическое сканирование (SCA) и SBOM - не опция, а необходимость.

Логирование и мониторинг - то, о чем все забывают. OWASP выделяет это в отдельную категорию не случайно. Среднее время обнаружения взлома - более 200 дней. Приложение без нормального мониторинга - приложение с незакрытым парадным входом.

Практический чек-лист

Для бэкенда (общий)

  •  Параметризованные запросы или ORM везде, где есть пользовательский ввод

  •  Авторизация проверяется на сервере, а не на клиенте

  •  ID пользователя берется из токена, а не из тела запроса

  •  Rate limiting на критичных эндпоинтах (логин, восстановление пароля)

  •  Логирование событий безопасности с алертами

  •  Регулярный аудит зависимостей (npm audit, pip-audit, dependabot)

Для веб-фронтенда

  •  CSP без 'unsafe-inline' для скриптов

  •  SameSite=Strict для авторизационных кук

  •  HttpOnly + Secure флаги

  •  CSRF-токены на формах изменения состояния

  •  HSTS с includeSubDomains

  •  Никакого innerHTML с пользовательскими данными

Для мобилки

  •  Токены - только в Keystore/Keychain, не в SharedPreferences/UserDefaults

  •  Certificate pinning с backup-пином и сроком обновления в календаре

  •  R8/ProGuard на релизных сборках

  •  FLAG_SECURE на экранах с чувствительными данными (защита от скриншотов)

  •  Никаких секретов в коде - даже обфусцированных

  •  Проверка на root/jailbreak - как доп. слой, не основной

Что почитать и поизучать дальше

  • OWASP Web Security Testing Guide (WSTG) - исчерпывающее руководство по тестированию веба, бесплатно

  • OWASP Mobile Application Security (MAS) - MASVS (стандарт) + MASTG (гайд по тестированию) + MAS Checklist

  • OWASP MobSF - автоматический статический и динамический анализ мобильных приложений

  • CWE/SANS Top 25 - список самых опасных классов уязвимостей независимо от платформы

  • iOS Security Guide от Apple - официальная документация по механизмам безопасности iOS

  • Android Security Guidelines от Google - официальные рекомендации для Android-разработчиков

  • PortSwigger Web Security Academy - бесплатные практические лабораторные по веб-уязвимостям

Авторы статьи:

- Илья Новиков, технический директор @inova99

- Данил Мануйлов, Максим Быков, Линар Огай, Максим Савченко, тимлиды

- Тимофей Ищенко, техлид Frontend-разработки (направление web) @Is_Tim

- Даниил Николаев, Frontend-разработчик (направление web)

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