Основная защита от подделки ASP.Net отказывает в отправке формы от Iframe - PullRequest
1 голос
/ 11 марта 2019

У меня есть основное приложение asp.net.Одна из форм приложения встроена в iframe другого приложения, работающего в другом.В моей конфигурации я подавил тот же заголовок X-Frame origin, чтобы я мог отправить форму iframe.

services.AddAntiforgery(options =>
            {
                options.SuppressXFrameOptionsHeader = true;
            });

Однако, когда я отправляю форму через iframe, я получаю ошибку неверного запроса, хотя могуубедитесь, что токен CSRF отправлен правильно.Если я удаляю атрибут

[ValidateAntiForgeryToken]

из действия контроллера, я могу отправить форму через iframe.Что я делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 09 июня 2019

Я нашел ответ на этот вопрос

https://stackoverflow.com/a/52709829/9931213

Вам нужно добавить

options.Cookie.SameSite = SameSiteMode.None;

к вашим AddAntiforgery опциям.

0 голосов
/ 08 июня 2019

Полагаю, вы путаете CSRF предотвращение атак (используя атрибут ValidateAntiForgeryToken) с clickjacking предотвращение атак (используя HTTP-заголовок X-Frame-Options).

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

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

...