Вопросы о CSRF - PullRequest
       14

Вопросы о CSRF

1 голос
/ 09 марта 2012

Безопасно ли использовать идентификационный токен в cookie для аутентификации (отправлять и запрашивать только json через ajax)?

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

Как атакующий выполняет CSRF-атаку с помощью запроса POST?

1 Ответ

15 голосов
/ 26 апреля 2012

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

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

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

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

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

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

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

Итак, предположим, у вас есть безопасный веб-сайт.Вы можете войти на этот сайт, используя SSL, и вы получите cookie-файл аутентификации SSL только для HTTP, который будет держать вас в системе.

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

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

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

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

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

...