Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Помогите обойти сsrf верификацию при http запросах

java
Теги: #<Tag:0x00007f7b652f5bb0>

(Roman Golovatyi) #1

Когда генерирую POST запрос получаю 403 ошибку и

{
    "detail": "CSRF Failed: Referer checking failed - no Referer."
}

как это можно обойти??
спасибо


(asolntsev) #2

Никак. Это ж специальная защита, чтобы хакеры не могли абы что постить от имени пользователя.
Разве что договоритесь с разработчиками, чтобы в TEST-среде они эту защиту отключили.


(Sergey Korol) #3

В каком смысле обойти? Вам в любом случае надо авторизоваться, прежде чем выполнять какие-либо запросы. Наверняка там вначале handshake идет, потом авторизация. Ну а затем полученный токен передается в хэдерах остальных запросов. Попросите у девелоперов нужные end-points.

П.С. Хотя, 403 - весьма странная ошибка. Обычно в таком случае 401 возвращают.


(Roman Golovatyi) #4

я делаю авторизацию и в принципе могу получить с хеддера токен, но как правильно его подставить в запрос?


(Михаил Братухин) #5

А на сайте их не пишут ничего про это? Например, тут: https://www.soapui.org/oauth2/reference/authorization.html


(Sergey Korol) #6

По soap не подскажу, но там наверняка есть опция задания headers. В REST это делается очень просто (Jersey sample):

service.path("end-point-path")
    .request(MediaType.APPLICATION_JSON)
    .header(AUTH_KEY, authHeder)
    .header(CSRF_TOKEN_KEY, csrfHeader)
    .post(someEntity);

(Михаил Братухин) #7

Возможно ошибаюсь (не использовал этот механизм на своих проектах), но мне кажется, что вот тут нужно прописать параметр для авторизации:


(Roman Golovatyi) #8

Спасибо


(Jamie Berry) #9

Если Вам для авторизации система выдаёт токен - забейте этот токен в переменную и каждый раз подставляйте её в хедере, например так: http://joxi.ru/bmokEkvfMWjDYm
В конкретном случае - после логина я жду json, в котором будет токен. Его забиваю в глобальную переменную. Дальше - в каждый тест-сьют подставляешь этот токен в хедер, вот так: http://joxi.ru/YmE8z8NhZWjNYr
(#Project# - область видимости переменной, X-AUTH-TOKEN - название переменной)


(Stan) #10

вообще судя по ошибке, у вас олдскульная защита от ксрф - проверка реферера, не пробовали подставить реферер с вашим доменом?