Приветствую Всех, прошу не пинать, если топик запостил не в тот раздел. У меня вот такая ситуация, написал я на c# не большой софт, он у меня удалённо, через HTTP запросы, заливает шаблоны в админки Джумла. Токая вот небольшая удобная софтинка) При тестировании всплыла, что в Джумла 2.5 и ниже архивы загружаю нормально, а вот от третей версии и выше не хочет. авторизацию проходит норм, а как начинает через форму отправлять запрос, то получает вот такой ответ: "Последний запрос был отклонён, поскольку он содержит неправильный параметр безопасности (security token). Пожалуйста, обновите страницу и попробуйте еще раз" Через сниффер смотрю, заголовки через код отправляю один в один как из формы админки. И опять же, на джумла 2.5 работает отлично. Вот в этом и вопрос, подскажите, куда копать, может кто уже сталкивался. Третий день голову ломаю((
Это получается, что помимо серверных кук, сама джумла генерирует какие то скрытые параметры, которые также необходимо передать., как считаете, а почему они не передаются с заголовками? Как их можно вообще отловить, может кто нибудь сталкивался.
Cookies устанавливаются либо посредством ответа от сервера, либо JavaScript. В таком случае, соответственно, два варианты решения проблемы: 1.) Читать запрос от сервера и сохранять/использовать передаваемые им куки. Как это сделать конкретнее? Тут зависит от того, какие ты средства используешь. Если стандартный HttpWebRequest, то необходимо создать CookieContainer, и пихать в него полученные куки от сервера, и в последующих запросах передавать их (и, соответственно, принимать новые по кругу). А ежели используешь скажем xNet, то логика такая же, только там уже CookieDictionary (вообще практически уверен, что ты знаешь как принимаются и передаются куки, заданные ответом сервера). 2.) Если куки устанавливает JavaScript, то это более мерзкая ситуация: либо фапать на код, и смотреть каким образом что-куда летит, либо эмулировать полную его работу (стоит отметить, что в твоем случае вряд-ли такой расклад). P.S. А вообще, полагаю, что искомый токен передается как раз таки через POST параметр (не проверялось), и просто нужно найти именно его, а не совать лажу. В любом случае смотри сниффером что происходит, и что откуда берется - анализируй. Удачи! P.P.S. Никаких "скрытых" параметров не существует.
куки от сервера я отловил как положено в контейнер и их же передал, по снифферу так же всё проверил..., буду думать дальше
Ищи различия между данными от сниффера и от своей проги (тоже её можешь сниффить). Если что-то не выходит, значит где-то имеются различия
По заголовкам все нормально, я думаю, что это может вебформа которая принимает мой текст, повторно генерит код который я ей отдаю с отправкой запроса. Тоесть, прежде чем мне отправить сам текст запроса, я первоночально отлавливаю регуляркой код вебформы, и его потом же передаю в post запросе вместе с заголовами и архивом. А он скорей всего, на исходном коде, который я считываю, дает один вариант, а при приеме запроса у него обновление. Ну это как бы теория, буду пробовать отробатывать ее.
https://learn.javascript.ru/csrf Чаще всего достаточно 1 запросить и спарсить форму (генерируется токен) 2 отправить данные с текущим обновленным токеном. А так тебе надо не в сниффер смотреть, а в код джумалы. Это ведь бесплатный движок, открываешь в редакторе типа sublime папку crtl + F "security token"