Вопрос по c#

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Patl, 19 Apr 2016.

  1. Patl

    Patl New Member

    Joined:
    19 Apr 2016
    Messages:
    15
    Likes Received:
    1
    Reputations:
    0
    Приветствую Всех, прошу не пинать, если топик запостил не в тот раздел.
    У меня вот такая ситуация, написал я на c# не большой софт, он у меня удалённо, через HTTP запросы, заливает шаблоны в админки Джумла. Токая вот небольшая удобная софтинка) При тестировании всплыла, что в Джумла 2.5 и ниже архивы загружаю нормально, а вот от третей версии и выше не хочет. авторизацию проходит норм, а как начинает через форму отправлять запрос, то получает вот такой ответ: "Последний запрос был отклонён, поскольку он содержит неправильный параметр безопасности (security token). Пожалуйста, обновите страницу и попробуйте еще раз"
    Через сниффер смотрю, заголовки через код отправляю один в один как из формы админки. И опять же, на джумла 2.5 работает отлично.
    Вот в этом и вопрос, подскажите, куда копать, может кто уже сталкивался.
    Третий день голову ломаю((
     
  2. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    636
    Likes Received:
    246
    Reputations:
    42
    Вероятнее всего, в новых версиях security token передается в виде кукисов.
     
  3. Patl

    Patl New Member

    Joined:
    19 Apr 2016
    Messages:
    15
    Likes Received:
    1
    Reputations:
    0
    Это получается, что помимо серверных кук, сама джумла генерирует какие то скрытые параметры, которые также необходимо передать., как считаете, а почему они не передаются с заголовками?

    Как их можно вообще отловить, может кто нибудь сталкивался.
     
  4. Раrаdох

    Раrаdох Elder - Старейшина

    Joined:
    30 Jan 2014
    Messages:
    95
    Likes Received:
    140
    Reputations:
    33
    Cookies устанавливаются либо посредством ответа от сервера, либо JavaScript.
    В таком случае, соответственно, два варианты решения проблемы:
    1.) Читать запрос от сервера и сохранять/использовать передаваемые им куки. Как это сделать конкретнее? Тут зависит от того, какие ты средства используешь. Если стандартный HttpWebRequest, то необходимо создать CookieContainer, и пихать в него полученные куки от сервера, и в последующих запросах передавать их (и, соответственно, принимать новые по кругу). А ежели используешь скажем xNet, то логика такая же, только там уже CookieDictionary (вообще практически уверен, что ты знаешь как принимаются и передаются куки, заданные ответом сервера).
    2.) Если куки устанавливает JavaScript, то это более мерзкая ситуация: либо фапать на код, и смотреть каким образом что-куда летит, либо эмулировать полную его работу (стоит отметить, что в твоем случае вряд-ли такой расклад).

    P.S. А вообще, полагаю, что искомый токен передается как раз таки через POST параметр (не проверялось), и просто нужно найти именно его, а не совать лажу. В любом случае смотри сниффером что происходит, и что откуда берется - анализируй. Удачи!
    P.P.S. Никаких "скрытых" параметров не существует.
     
  5. Patl

    Patl New Member

    Joined:
    19 Apr 2016
    Messages:
    15
    Likes Received:
    1
    Reputations:
    0
    куки от сервера я отловил как положено в контейнер и их же передал, по снифферу так же всё проверил..., буду думать дальше
     
  6. Раrаdох

    Раrаdох Elder - Старейшина

    Joined:
    30 Jan 2014
    Messages:
    95
    Likes Received:
    140
    Reputations:
    33
    Ищи различия между данными от сниффера и от своей проги (тоже её можешь сниффить). Если что-то не выходит, значит где-то имеются различия :)
     
  7. Patl

    Patl New Member

    Joined:
    19 Apr 2016
    Messages:
    15
    Likes Received:
    1
    Reputations:
    0
    По заголовкам все нормально, я думаю, что это может вебформа которая принимает мой текст, повторно генерит код который я ей отдаю с отправкой запроса.
    Тоесть, прежде чем мне отправить сам текст запроса, я первоночально отлавливаю регуляркой код вебформы, и его потом же передаю в post запросе вместе с заголовами и архивом. А он скорей всего, на исходном коде, который я считываю, дает один вариант, а при приеме запроса у него обновление. Ну это как бы теория, буду пробовать отробатывать ее.
     
    Раrаdох likes this.
  8. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    https://learn.javascript.ru/csrf

    Чаще всего достаточно 1 запросить и спарсить форму (генерируется токен) 2 отправить данные с текущим обновленным токеном.
    А так тебе надо не в сниффер смотреть, а в код джумалы. Это ведь бесплатный движок, открываешь в редакторе типа sublime папку crtl + F "security token"
     
    _________________________
    pravdaru, Patl and Раrаdох like this.