Насколько я понимаю CSRF, это очень простая схема:
Представьте, что MyApp.com - это чисто SPA с бэкэндом RESTful, url в примере (myapp.com/user/delete-account.php) скорее RESTful API (myapp.com/API/delete-account.json) и вызывается только и только из браузеров javascript (angular) или мобильного приложения (которое использует JWT).
Идея: если я добавлю определенный заголовок в любой запрос в JavaScript:
headers.append('X-MyApp-Source', 'angular-app');
и добавьте проверку на стороне сервера:
if (user.AuthType == "cookies" && !request.Headers.Contains("X-MyApp-Source"))
{
return (400, "Bad request, missing source header");
}
Есть ли способ, как злоумышленник может создать запрос с помощью файлов cookie Боба с заголовком запроса?
X-Frame-OptionsЯ не говорю, что моя идея пуленепробиваемая, просто brianstorm.
Спасибо!





Почему MyApp-Crack.com не использует withCredentials: true для отправки соответствующего файла cookie аутентификации на myapp.com? Он не может прочитать значение cookie, но все же может его отправить.
Также для добавления заголовка можно использовать старый (или намеренно вредоносный) плагин или расширение браузера (старая версия Java, Flash и т. д.). Это примерно то же самое, что и проверка Referer / Origin для защиты от CSRF - намного лучше, чем ничего, но не лучшее, что вы можете сделать.
Таким образом, в идеальных условиях он не уязвим напрямую, но и не очень надежен.
Кошоном Габором! Итак, мое последнее утверждение не соответствует действительности. Javascript в другом домене добавляет заголовок и отправляет файлы cookie.