Подделка межсайтовых запросов (CSRF)
Подделка межсайтовых запросов (CSRF) - это атака, которая вынуждает конечного пользователя выполнять нежелательные действия в веб-приложении, в котором онив настоящее время аутентифицированыCSRF-атаки специально направлены на запросы об изменении состояния, а не на кражу данных, поскольку злоумышленник не может увидеть ответ на поддельный запрос.С небольшой помощью социальной инженерии (такой как отправка ссылки по электронной почте или в чате) злоумышленник может заставить пользователей веб-приложения выполнить действия по выбору злоумышленника.Если жертва является обычным пользователем, успешная атака CSRF может заставить пользователя выполнять запросы на изменение состояния, такие как перевод средств, изменение адреса электронной почты и т. Д.Если жертва является учетной записью администратора, CSRF может поставить под угрозу все веб-приложение.
Поэтому при использовании Selenium ActionChains
реализация выглядит так:
ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()
Предположительно, вы заходите на какую-то другую веб-страницу, где устанавливается сеанс и многие другие атрибуты сеанса аутентифицируются.На следующем шаге вы используете реализацию Selenium ActionChains
для вызова click()
на WebElement , который приведет вас на новую веб-страницу https://example.com
.
Но в вашем альтернативном подходе вы пытаетесь перейти непосредственно к веб-странице https://example.com
, где отсутствуют обязательные атрибуты сеанса .Следовательно, сеанс в этом случае не устанавливается, и вы видите Warning как:
Warning: cross-site request forgery control is enabled
Solution
Более простым решением будет следовать фактическому потокуто есть доступ к начальной веб-странице, где будет установлен сеанс и аутентифицированы необходимые атрибуты сеанса.На следующем шаге вы можете использовать реализацию Selenium ActionChains для вызова click()
на нужном веб-элементе, который приведет вас на новую веб-страницу https://example.com.
Альтернатива
В качестве альтернативы вы можете создайте профиль Chrome и используйте назначенный профиль Chrome для хранения атрибутов SessionAttributes и повторного использования согласно вашему требованию.