2012-03-09 4 views
1

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

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

Как атакующий совершает атаку CSRF с запросом POST?

+0

Просьба уточнить ваш первый вопрос. – Gumbo

ответ

10

Можно ли использовать один токен в 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-шифрованием.

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

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