powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / CSRF и одностраничное приложение и на нескольких вкладках: как???
23 сообщений из 23, страница 1 из 1
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38459741
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перечитал весь инет - чего только люди друг на друга не наговорят во время обсуждения проблемы...но только не по делу (
В общем проблема защиты от CSRF на одностраничном приложении:

- мы генерируем уникальный токен и при первом запросе кладем его на страницу в специальное поле _csrf и попутно зашифровываем и кладем tuj в кук (сессии не рассматриваю по политическим причинам - они мне не нравятся совсем:)) )

- ежели вдруг каким-то образом страничка в моем приложении выполнит запрос, то вместе с ним на сервер прийдет скрытое поле _csrf и кук с зашифрованным токеном - ура сравнили все хорошо!

- но не тут-то было - страничками постить на сервер запросы я тоже не люблю - поэтому пользуюсь ajax запросами - тут вроде бы тоже ничего сложного : берем из тайного поля токен, помещаем его в спец заголовок и посылаем запрос - а с ним на сервер идет и кук с зашифрованным токеном - все опять ок.

- но вражина юзер решил открыть приложение еще и на другой вкладке - естественно сервер честно сгенерирует для той странички новый токен а вместе с ним прийдет и обновленный кук - и тут все запросы с 1й вкладки будут считаться вражескими!!

Кто как выходит из данной ситуации??
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38459774
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spКто как выходит из данной ситуации??
мы в неё не попадаем.


sp- но вражина юзер решил открыть приложение еще и на другой вкладке - естественно сервер честно сгенерирует для той странички новый токен а вместе с ним прийдет и обновленный кук - и тут все запросы с 1й вкладки будут считаться вражескими!!

не естесвенно, а при помощи говнокода
кука ведь прилетела, а скрытое поле - нет

и правильно - сам уж решай что предложить юзеру - отказаться от нового сеанса или закрыть старый.
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38460123
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp,

можно этот секретный ключ сразу класть в куку (на сервере), а при ajax запросе доставать его из куки и добавлять в параметры - тогда у всех страничек будет одно и то же.
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38460420
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spКто как выходит из данной ситуации??

не создаём себе геморройных ситуаций. ваше решение — бред. ни от чего не защищает, а проблем добавляет.
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38460429
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp,

@Html.AntiForgeryToken(salt)

и не калупайте себе итаг уже замученный мозг.
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38460745
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

вы хоть пост прочитали? такое впечатление что вы ситуацию не поняли - токен и так создается, но этот ваш стандартный токен защищает от атаки только в многостраничном приложении...улавливаете разницу???
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38460747
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилspКто как выходит из данной ситуации??
мы в неё не попадаем.


sp- но вражина юзер решил открыть приложение еще и на другой вкладке - естественно сервер честно сгенерирует для той странички новый токен а вместе с ним прийдет и обновленный кук - и тут все запросы с 1й вкладки будут считаться вражескими!!

не естесвенно, а при помощи говнокода
кука ведь прилетела, а скрытое поле - нет

и правильно - сам уж решай что предложить юзеру - отказаться от нового сеанса или закрыть старый.

поле тоже прилетело - как же страниуа без поля полетит - ее начальник не выпустит! :)
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38460757
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Мечsp,

можно этот секретный ключ сразу класть в куку (на сервере), а при ajax запросе доставать его из куки и добавлять в параметры - тогда у всех страничек будет одно и то же.

может быть - но почему-то так никто не делает, тот же ASP.NET мог бы такое делать и это было бы проще чем в каждую страницу вставлять поле. не знаю...
пойду на StackOverflow - там люди добрей )
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38460774
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот вражеский народ (на StackOverflow) и то добрее и профессиональней оказался :)

суть в следующем - что CSFR код генерируется один раз на всю сессию (это когда сессия есть на сервере).
в моей ситуации значит надо один раз токен сгенерировать и положить в кук и затем распихивать его по страницам

csrf-protection-by-storing-nonce-in-session-variable-and-form
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38460813
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем я понял в чем моя ошибка была - многие статьи пишут что для пущей секретности данный токен надо как можно чаще менять и выпускать его новый для каждого ресурса/страницы, а по науке (об этом нигде прямо не указано) он генерируется один раз на сессию
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38461075
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spНу вот вражеский народ (на StackOverflow) и то добрее и профессиональней оказался :)

суть в следующем - что CSFR код генерируется один раз на всю сессию (это когда сессия есть на сервере).
в моей ситуации значит надо один раз токен сгенерировать и положить в кук и затем распихивать его по страницам

csrf-protection-by-storing-nonce-in-session-variable-and-form

ничё не понял. то вы пишите про одностраничное приложение, то теперь вы уже по каким-то страницам что-то там распихиваете. у меня большие сомнения, что речь идёт о реальном проекте. потому что с таким подходом вряд ли можно дойти до чего-то вменяемого, интересного хотябы десятку пользователей во всём рунете, не говоря уже о каких-то призрачных миллионах, каждый второй который норовит взломать сайт.

ещё раз AntoForgeryToken прекрасно справляется с поставленной задачей. и количество страниц 1 или тысяча, совершенно по барабану сколько там их у вас. вообще до фанаря. до лампочки. плевать. не имеет значения. не выдумывайте. и не парьте себе и людям мозг.
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38461197
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttspНу вот вражеский народ (на StackOverflow) и то добрее и профессиональней оказался :)

суть в следующем - что CSFR код генерируется один раз на всю сессию (это когда сессия есть на сервере).
в моей ситуации значит надо один раз токен сгенерировать и положить в кук и затем распихивать его по страницам

csrf-protection-by-storing-nonce-in-session-variable-and-form

ничё не понял. то вы пишите про одностраничное приложение, то теперь вы уже по каким-то страницам что-то там распихиваете. у меня большие сомнения, что речь идёт о реальном проекте. потому что с таким подходом вряд ли можно дойти до чего-то вменяемого, интересного хотябы десятку пользователей во всём рунете, не говоря уже о каких-то призрачных миллионах, каждый второй который норовит взломать сайт.

ещё раз AntoForgeryToken прекрасно справляется с поставленной задачей. и количество страниц 1 или тысяча, совершенно по барабану сколько там их у вас. вообще до фанаря. до лампочки. плевать. не имеет значения. не выдумывайте. и не парьте себе и людям мозг.

вы вообще понимаете о чем речь идет - речь идет об одностраничном приложении не использующем сессии на сервере!! в котором вся работа выполняется при помощи ajax запросов и при этом пользователь может открыть несколько закладок с одним приложением! внимательно прочтите - думаю поразмыслив поймете почему AntoForgeryToken вообще никак не будет справляться
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38461205
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spвы вообще понимаете о чем речь идет
а отличие от тебя - понимаем
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38461231
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spречь идет об одностраничном приложении не использующем сессии на сервере!!

при чём тут ваши сессии??

The incoming request has a cookie called __RequestVerificationToken
The incoming request has a Request.Form entry called __RequestVerificationToken
These cookie and Request.Form values match


spвнимательно прочтите

я не думаю, что прочитав ваш бессмысленный бред еще более внимательно, от этого что-то изменится. ваш велосипед во-первых, ни от чего ваше приложение не защищает, во-вторых, доставляет проблем. говорю вам в последний раз. можете возвращаться на стекофелфлоу и продолжать клепать свой велосипед с квадратными колёсами.

AntyForgeryToken прекрасно справляется с возложенной на него задачей, и точка. конец бестолковой дискуссии.
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38461246
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

понятно вы любитель все делать параллельно и перпендикулярно:) и для вас шаг вправо или влево а также прыжок на месте - провокация и об этом надо донести куда следует :) вас раздражают нестандартные решения и постановки задачи!? хотите поговорить об этом?)))
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38461247
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

:) ваш токен не работает без сессии - и что вы в этом можете понимать... ну ну )
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38461277
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spпонятно вы любитель все делать параллельно и перпендикулярно:) и для вас шаг вправо или влево а также прыжок на месте - провокация и об этом надо донести куда следует :) вас раздражают нестандартные решения и постановки задачи!? хотите поговорить об этом?)))

послушайте, умник. что меня раздражает, это наглая и упёртая тупость.

нижеприведённый код отрабатывает без проблем в неограниченном количестве одновременных вкладок, без какого-либо участия сессий, без аутентификации и чего-бы-то-ни-было-ещё. если вы размножите формы на странице, это тоже будет работать. если вы будете использовать AJAX POST (JSON, XML), и это тоже будет работать. и защита от CSRF полная. если, конечно, не допустить дыру для XSS.

вместо того чтобы задвигать здесь какие-то идиотские темы про то, какие на SO все добренькие, а тут злые и совсем вам не помогают, идите лучше учите уроки. если клиника мозга, то уже не помочь ничем.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
    [SessionState(SessionStateBehavior.Disabled)]
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View(new MyModel());
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Index(MyModel model)
        {
            if (ModelState.IsValid)
            {
                ViewBag.Message = "Valid";
            }
            return View(model);
        }
    }

    public class MyModel
    {
        public string Password { get; set; }
    }



Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()

        @Html.ValidationSummary()

        <h3>@ViewBag.Message</h3>
        
        <div>
            <label>password</label>
            @Html.TextBoxFor(x => x.Password)
        </div>
        
        <div>
            <label>anty forgery token</label>
            <input type="text" id="forgery" style="width: 100%;" />
        </div>
        <button type="submit">Submit</button>
    }
    <script>
        $(function () {
            var token = $('[name="__RequestVerificationToken"]');
            var forgery = $('#forgery');
            forgery.val(token.val());
            forgery.on('change', function () {
                token.val($(this).val());
            });
        });
    </script>
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38461281
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttspКто как выходит из данной ситуации??

не создаём себе геморройных ситуаций. ваше решение — бред. ни от чего не защищает, а проблем добавляет.

я думаю чтоб впредь вы сильно не раздражались - не стоит так отвечать!
после такого ответа на какую реакцию вы расчитывали?)
нельзя было конструктивно и без пренебрежительного тона как подобает специалистам обсудить воррос???

по поводу вашего примера - возможно сейчас в MVC фреймворке это так как вы и привели, но в те времена когда мы пользовались ASP.NET дела обстояли иначе да в других средах токен привязан к сессии возьмите Ruby, Django и другие.
мы используем Node.js+Express - в нем тоже токен привязан к сесси но это становится ограничением при масштабировании - поэтомк переписываем модуль CSRF поэтому и спрашивал. тут написам нормальный пост а в ответ посыпались одни посылки и оскорбления...
чая я тоже не железный - кровинушка то у меня русская - вот и размахался тут руками аж неловко, но не я в этом виноват.
обидно что почти каждый пост на SQL.RU нынче обычно заканчиваетмя драками - я уже боюсь сюда даже писать сплошь хамство и оскорбления не в пример зарубежным форумам...
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38461395
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp,

Сами по себе драки - ничего страшного, во многих случаях от них даже польза бывает.
А вот переход на личности и оскорбление - криминал.
Поэтому: Модератор: Мембер hVostt получает строгое предупреждение!
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38461432
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp,

давайте без демагогии? чем вам это решение не устраивает?
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38461457
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spчая я тоже не железный - кровинушка то у меня русская - вот и размахался тут руками аж неловко, но не я в этом виноват.

тьфу... да вы даже не используете ASP.NET, а пишите сюда — в форум по ASP.NET . целенаправленно вводите людей в заблуждение. чото спорите. делаете утверждения, не соответствующие истине. а потом пишите "я не виноват".

знаете как это называете? думаете на зарубежном форуме к вам после такого лучше отнесутся? да, может дилекатней, подумают про себя <нехорошее слово>, а в слух не скажут.

чего вы добиваетесь, я уже перестал понимать окончательно.
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38461671
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttspчая я тоже не железный - кровинушка то у меня русская - вот и размахался тут руками аж неловко, но не я в этом виноват.

тьфу... да вы даже не используете ASP.NET, а пишите сюда — в форум по ASP.NET . целенаправленно вводите людей в заблуждение. чото спорите. делаете утверждения, не соответствующие истине. а потом пишите "я не виноват".

знаете как это называете? думаете на зарубежном форуме к вам после такого лучше отнесутся? да, может дилекатней, подумают про себя <нехорошее слово>, а в слух не скажут.

чего вы добиваетесь, я уже перестал понимать окончательно.

Вы плохо думаете о людях)) в отличие от наших псевдоспециалистов, там даже на дилетантский вопрос дают подробный и обстоятельный ответ!
Спасибо за науку - сам виноват, новое поколение набежало на форум и он становится не форумом а помойным местом :)
...
Рейтинг: 0 / 0
CSRF и одностраничное приложение и на нескольких вкладках: как???
    #38461957
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp, простите, а Вы можете показать, кто первый начал и кого оскорблять? Если человек считает решение бредом, но при этом не переходит на личности, это оскорбление?

Второй вопрос: это "оскорбления" побудили Вас утверждать то, что AntiForgeryToken не решает задачу, пока Вам код не показали?

P.S.: в следующий раз начните с описания задачи, исключив подробности о том, какую часть инета Вы перечитали, какое решение придумали и как обойти затык, созданный этим решением.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / CSRF и одностраничное приложение и на нескольких вкладках: как???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]