Nano Hash - криптовалюты, майнинг, программирование

REST и CSRF (подделка межсайтовых запросов)

Возможна ли подделка межсайтовых запросов для службы RESTful без сохранения состояния?

Я не говорю о псевдо-REST, когда сервер запоминает, что вы вошли в систему через cookie. Я говорю о чистом REST без состояния приложения на сервере без файлов cookie.

Я использую SSL и базовую аутентификацию. Для каждого запроса должен присутствовать этот заголовок авторизации. В смысле JSP нет «сеанса», хотя есть какой-то сеанс на уровне SSL.

Итак, давайте предположим, что я просматриваю законную веб-страницу, которая делает запросы Ajax, и каким-то образом я перехожу на другую страницу на той же вкладке или на другой вкладке, и эта страница выполняет тот же запрос Ajax. (Я предполагаю, что на законной веб-странице нет вредоносного кода; это совсем другое дело, и в этом случае возможно все.)

Когда вторая страница сделает запрос Ajax, будет ли браузер использовать тот же заголовок авторизации? то есть браузер скажет: «О, ты хочешь пойти СЮДА еще раз? Эй, просто случайно у меня все еще есть ключ!»?

Кроме того, не мог ли вредоносный сценарий выполнить запрос xhr, а затем в обратном вызове принять запрос от ioargs, получить заголовок авторизации и отключить имя и пароль от Base64?

07.01.2010

Ответы:


1

Отказ от ответственности: я не эксперт по безопасности.

Использование HTTP Basic Auth не предотвращает атаки CSRF через запросы GET. Например. кто-то другой может включить тег img на свою HTML-страницу, который выполняет GET для некоторого известного URI, и ваш браузер с радостью отправит базовую информацию для аутентификации. Если операция GET «безопасна» (что является правилом №1 для всего, что претендует на статус RESTful), это не создаст проблемы (помимо потраченной впустую полосы пропускания).

Ajax не является проблемой из-за политики одного и того же происхождения.

Только включение сгенерированного сервером токена в генерируемый вами HTML-код и проверка его присутствия в запросах на отправку формы защитит вас от кого-то еще, просто включив «чужую» форму на свои страницы. Вы можете ограничить это типами контента, создаваемыми браузерами; нет необходимости делать это для запросов XHR.

08.01.2010
  • IFrames каким-то образом обретают одинаковое происхождение. Возможно ли следующее: hisData = какой-то iframe XHRGet (csrf); myURL = 'my.site/ src = '+ myURL +' /›; ? предполагая, что csrf - это URL-адрес, который получает некоторые конфиденциальные данные, а GET на my.site/grab регистрирует эти данные, которые мы помещаем в запрос. 08.01.2010
  • Браузер не проверяет это? 01.02.2018

  • 2

    Необходима ли защита CSRF, зависит от 2 факторов:

    1. Выполняет ли запрос действие по изменению состояния (не то же самое, что и отсутствие состояния в REST API). Действия по изменению состояния - это любые действия, которые изменяют состояние приложения ... например, удаление чего-либо, добавление чего-либо, обновление что-то. Это действия, с помощью которых приложение изменит поддерживаемое состояние пользователя. Все запросы на публикацию и несколько запросов на получение подпадают под эту категорию. API REST могут иметь действия по изменению состояния.

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

    Для всех запросов, которые подпадают под две вышеупомянутые категории, необходима защита CSRF.

    Как ответил Стефан выше, запросы Ajax защищены политикой одинакового происхождения (SOP). SOP запрещает другому домену читать контент, отправленный целевым доменом. Таким образом, вредоносный скрипт не может прочитать заголовок авторизации. Но SOP не мешает другому домену отправлять запросы в целевой домен. Таким образом, вредоносный сценарий по-прежнему может отправлять запросы на изменение состояния в целевой домен. Браузер будет включать в этот запрос информацию для аутентификации и файлы cookie, поэтому серверу необходимо знать, исходит ли этот запрос от вредоносного домена или от пользователя. Из-за этого необходима защита CSRF.

    22.04.2019
    Новые материалы

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

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..