Использование украденного файла cookie в cURL для обхода CSRF
Мне нужно обработать веб-страницу. Эта веб-страница основана на YII framework
, а страница входа защищена CSRF tokens
. Когда я передаю учетные данные для входа POST method
. Я получаю сообщение error 400
и The CSRF token could not be verified
.
Я не знаю, как пройти эту защиту. Я не понимаю механизм. Когда я вхожу в браузер браузера Chrome, я вижу, как выглядит сообщение POST. Он имеет 4 параметра: ключ CSRF, логин, пароль, одну пустую переменную. Как браузер получает правильный ключ CSRF для отшлифовки?
У меня есть логин и пароль для этой веб-страницы, и я могу войти в систему как обычный пользователь. Только защищенная страница защищена от CSRF. Могу ли я использовать файл cookie (как это сделать), созданный браузером при обычном входе в систему, передать этот cookie to cURL
и начать обработку URLs
за страницей входа?
Ответы
Ответ 1
MrMgr Отвечает в своих комментариях. Я поставил его здесь, чтобы помочь другим людям легко определить ответ.
Ключ CSRF создается для сеанса, и он находится на странице LOGIN как обычный текст. Я могу скопировать его из исходного кода, страницы входа в систему и предоставить cURL script для использования в качестве переменной POST. Ключ CSRF не изменяется после обновления каждой страницы, КЛЮЧ действует до выхода из системы. При выходе из системы ключ CSRF отфильтровывается до сервера для завершения.
Источник
Ответ 2
Знаки CSRF действуют, чтобы сделать это точное действие трудным. Вам нужен лучший способ подделать браузер с PHP. Для этого сохраните все файлы cookie в том, что обычно называется "cookie jar". PHP-реализация curl имеет такую возможность. Все запросы curl, направляемые на этот сайт, должны использовать этот кук файл cookie с этого момента.
Далее вам нужно проанализировать страницу входа, чтобы получить все поля, которые были отправлены. Это включает имя пользователя, пароль, CSRF и другие скрытые поля. Убедитесь, что у вас есть значения для каждого из них. Если он не должен вводиться вами (например, скрытые входы), очистите страницу входа в систему HTML и поместите эти поля в переменные, которые вы можете передать в POST входа. Также не забудьте отправить URL-адрес страницы входа, которую вы очистили в качестве реферера в POST для входа.
Parsing html может быть утомительным, но библиотеки, такие как SimpleHTMLDOM, должны сделать его простым, если вы знакомы с селекторами CSS.