ПОЛУЧЕНИЕ и публикация при проверке сеанса

#security #validation #rest #post #get

#Безопасность #проверка #отдых #Публикация #получить

Вопрос:

Итак, я только что прочитал эту статью Джеффа Этвуда и хотел убедиться, что я правильно понимаю, как это применимо к моему варианту использования. Я пытаюсь проверить сеанс для автоматического входа в систему. В целях безопасности это должно быть сделано с помощью POST, верно? Имеет ли это значение? Я просто передаю идентификатор сеанса и имя пользователя из файла cookie.

Ответ №1:

Когда дело доходит до CSRF (подделка межсайтовых запросов), вы можете заставить пользователя выполнить любое действие на любом сайте, на который он вошел, при условии, что для действия требуется только GET . Принудительное выполнение этого через POST-запрос сводит на нет подход к встраиванию изображения, тега сценария или чего-либо еще на другой странице.

Даже POST не является полностью безопасным в этом сценарии. Существуют и другие способы организовать CSRF-атаку на сайт с использованием POST. Перехват кликов / исправление пользовательского интерфейса позволяет другому сайту обманом заставить пользователя отправить форму на другой веб-сайт.

По сути, лучший способ проверки — добавить автоматически сгенерированный скрытый элемент формы. Вы можете сохранить это внутри данных вашего сеанса (пример: $_SESSION для PHP), так что вам нужно только сгенерировать токен в начале сеанса. Конечно, атака может попытаться сделать что-то вроде взлома кликов (упомянуто выше) в сочетании с iframe, указывающим непосредственно на ваш сайт, и, возможно, некоторым JS, чтобы немного скрыть вещи.

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