Безопасно ли использовать один токен в куки для аутентификации?
В некотором роде, если этот куки только для 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, которое говорит, что вам нравится то, что я хочу, чтобы вы.