Безопасность веб-приложений
Безопасность веб-приложений рассматривает уязвимости, специфичные для веб-программного обеспечения — инъекции, межсайтовый скриптинг, нарушения аутентификации и контроля доступа, — которые являются одними из наиболее распространенных и значимых в современных системах.
Definition
Безопасность веб-приложений — это практика защиты веб-ориентированного программного обеспечения и его пользователей от атак, которые используют уязвимости в обработке входных данных, сеансов, аутентификации и контроля доступа приложением, а также слабости в модели безопасности браузера.
Scope
Эта тема охватывает модель угроз веб-приложений (недоверенный клиент, враждебная сеть, многопользовательские серверы) и характерные для нее классы уязвимостей: инъекции (SQL и командные), межсайтовый скриптинг, межсайтовая подделка запросов, нарушения контроля доступа и аутентификации, а также небезопасная десериализация. Она охватывает модель безопасности браузера (политика одного источника, политика безопасности контента) и стандартные средства защиты. Она исключает низкоуровневую эксплуатацию памяти и общие процессы безопасной разработки, рассматриваемые в смежных темах.
Core questions
- Почему смешивание недоверенного ввода с кодом или запросами создает уязвимости инъекций?
- Как межсайтовый скриптинг и межсайтовая подделка запросов атакуют пользователей сайта?
- Как политика одного источника браузера ограничивает возможности веб-кода?
- Как обычно нарушаются аутентификация, сеансы и контроль доступа в веб-приложениях?
- Какие стандартные средства защиты предотвращают наиболее распространенные веб-уязвимости?
Key concepts
- SQL- и командные инъекции
- межсайтовый скриптинг (XSS)
- межсайтовая подделка запросов (CSRF)
- нарушение контроля доступа
- нарушение аутентификации и управления сеансами
- политика одного источника
- политика безопасности контента
- параметризованные запросы
- OWASP Top Ten
Key theories
- Инъекции и путаница кода/данных
- Уязвимости инъекций (SQL-инъекции, командные инъекции) возникают, когда недоверенный ввод интерпретируется как код; защита заключается в разделении данных и кода, главным образом с помощью параметризованных запросов и строгого кодирования вывода.
- Модель безопасности браузера и клиентские атаки
- Политика одного источника изолирует контент из разных источников, но межсайтовый скриптинг внедряет скрипт злоумышленника в доверенную страницу, а межсайтовая подделка запросов злоупотребляет аутентифицированным сеансом пользователя; средства защиты включают кодирование вывода, политику безопасности контента и токены защиты от CSRF.
Mechanisms
SQL-инъекция происходит, когда пользовательский ввод конкатенируется в запрос, позволяя злоумышленнику изменить его логику; параметризованные запросы исправляют это путем привязки ввода как данных. Межсайтовый скриптинг внедряет скрипт в страницу, который затем выполняется браузерами других пользователей, что смягчается контекстно-зависимым кодированием вывода и политикой безопасности контента. Межсайтовая подделка запросов обманывает аутентифицированный браузер, заставляя его выполнять нежелательные запросы, что защищается с помощью токенов защиты от CSRF и файлов cookie SameSite. Ошибки контроля доступа возникают, когда сервер не проверяет авторизацию при каждом запросе.
Clinical relevance
Уязвимости веб-приложений являются причиной многих крупнейших утечек данных: SQL-инъекции и нарушения контроля доступа привели к раскрытию миллиардов записей, а межсайтовый скриптинг регулярно компрометирует учетные записи пользователей. Поскольку почти все сервисы имеют веб-интерфейс, веб-безопасность напрямую влияет на электронную коммерцию, банковские услуги, медицинские порталы и государственные системы, а также является основой для тестирования на проникновение, программ вознаграждения за обнаружение ошибок (bug-bounty) и режимов соответствия, таких как PCI-DSS.
Evidence & guidelines
OWASP Top Ten является де-факто справочником по распространенным веб-рискам, дополненным Стандартом проверки безопасности приложений OWASP (ASVS) и «шпаргалками» (cheat sheets). Защитные механизмы, обеспечиваемые браузером (политика безопасности контента, файлы cookie SameSite, целостность подресурсов), стандартизированы W3C и WHATWG. Фреймворки соответствия, такие как PCI-DSS, предписывают меры контроля веб-безопасности для систем, обрабатывающих платежные данные.
History
Безопасность веб-приложений развивалась вместе с динамическим вебом конца 1990-х и 2000-х годов, когда базы данных и пользовательский ввод породили уязвимости инъекций и скриптинга. OWASP Top Ten (впервые выпущенный в 2003 году) стандартизировал осведомленность о наиболее критических рисках. Защитные механизмы на стороне браузера развивались через политику одного источника, а затем и политику безопасности контента, в то время как знаковые утечки неоднократно демонстрировали реальную стоимость SQL-инъекций и нарушений контроля доступа.
Key figures
- Dafydd Stuttard
- Ross Anderson
- Jeremiah Grossman
- Michal Zalewski
Related topics
Seminal works
- stuttard2011
- owasp2021
- anderson2020
Frequently asked questions
- Какое единственное наиболее эффективное средство защиты от SQL-инъекций?
- Использование параметризованных запросов (подготовленных выражений), которые отправляют структуру SQL и предоставленные пользователем значения отдельно, так что ввод никогда не может быть интерпретирован как часть запроса. Это позволяет разделить код и данные и нейтрализует класс атак.
- Чем межсайтовый скриптинг отличается от SQL-инъекций?
- Оба возникают из-за недоверенного ввода, но SQL-инъекции нацелены на базу данных сервера, в то время как межсайтовый скриптинг внедряет вредоносный скрипт, который выполняется в браузерах других пользователей на доверенном сайте. SQLi крадет или изменяет данные сервера; XSS перехватывает пользовательские сеансы и действия.