2016-12-25 16 views
1

У меня есть приложение, которое состоит из простого интерфейса JSON API и React. Аутентификация обрабатывается через файлы cookie, а интерфейс используется из того же домена, который я использую для API. Поскольку я не разрешаю CORS, задаюсь вопросом, будет ли API защищен от атак CSRF, если он принимает только запросы с некоторым настраиваемым заголовком, например, если X-Requested-With установлено на XMLHttpRequest?API CSRF защита

ответ

1

Злоумышленник может отправить запрос на межсайтовый сайт с XMLHttpRequest без нарушения политики одинакового происхождения (SOP) - единственным ограничением является то, что сайт злоумышленника не сможет увидеть ответ. Куки-файлы включаются в каждый запрос, отправленный браузером жертвы, поэтому вызов API будет по-прежнему запускаться с помощью XHR для межсайтовых сайтов, поэтому этот API по-прежнему уязвим для CSRF.

Если вы не хотите изменять какие-либо изменения архитектуры безопасности, то CSRF Prevention Cheat Sheet recommends checking the Origin header. В этом документе описаны другие методы, такие как метод синхронизатора токенов CSRF, который может использоваться в качестве элемента заголовка и считается более надежным средством защиты.

+0

спасибо ладью. я проверил это с двумя приложениями, запущенными на localhost, но с разными портами. Я не смог уничтожить ресурс в app1 с помощью запроса DELETE с сайта из app2, но я смог создать его с помощью POST. Мое понимание заключалось в том, что, чтобы проверить, разрешено ли отправлять xhr, во всех случаях будет отправлен только запрос с параметрами http. – rodic

+1

@rodic для любви ко всему, что есть в мире, пожалуйста, при минимальной проверке 'Origin' - я уверяю вас, что это доступно. Вариантов предполета можно избежать. – rook

+0

эй, если это не ясно, я отвечу на ваш совет с оригинального сообщения. просто хотел проверить, что вы сказали, потому что я думал, что sop работает по-другому. еще раз спасибо. – rodic