Вопросы о CSRF

Можно ли использовать сигнатурный токен в cookie для auth (post и requst только json через ajax)?

Почему злоумышленник не может получить токен формы в скрытом поле?

Как злоумышленник совершает атаку CSRF с запросом POST?

Ответ 1

Можно ли использовать один токен в cookie для аутентификации?

Сортировка, если этот файл cookie является только HTTP-протоколом (который защищает от XSS) и SSL, тогда никто не может за пределами вашего сайта читать этот файл cookie.

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

Почему злоумышленник не может получить маркер формы в скрытом поле?

В атаке CSRF хакер не может читать ваш сайт или файл cookie, потому что он должен быть защищен SSL/HTTPS. CSRF работает, обманывая ваш браузер, отправляя свои данные вместе с вашими защищенными данными на ваш сайт.

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

Как злоумышленник совершает атаку CSRF с запросом POST?

Хорошо, так что предположим, что у вас есть безопасный веб-сайт. Вы можете войти на этот сайт с помощью SSL, и вы получите HTTP-протокол проверки подлинности SSL-протокола, который позволит вам войти в систему.

Теперь у меня есть новая страница на совершенно другом сайте. Если я свяжусь с вашим сайтом с моего, тогда, когда вы нажмете на эту ссылку, он покинет мой сайт и отправится к вам, передав ваш файл cookie.

Если я добавлю HTML <form> на свою страницу, что POST вернутся на ваш сайт, произойдет одно и то же: браузер вернется на ваш сайт и отправит любые данные в форме вместе с вашим файлом cookie.

Обратите внимание, что я не читал ни ваш файл cookie, ни любые страницы вашего сайта, так как оба они защищены SSL-шифрованием.

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

Тривиальным примером этого является функциональность "Like" на Facebook - они теперь исправили это, я думаю, но какое-то время я мог обмануть ваш браузер (без доступа к вашим данным) в отправку вашего файла cookie аутентификации в действие Facebook что вам нравится то, что я хочу от вас.