Основная защита от подделки ASP.Net, запрещающая отправку формы из Iframe

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

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

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

[ValidateAntiForgeryToken]

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


person Georgi Georgiev    schedule 11.03.2019    source источник


Ответы (2)


Я нашел ответ на это

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

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

options.Cookie.SameSite = SameSiteMode.None;

к параметрам AddAntiforgery.

person Paul O    schedule 08.06.2019

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

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

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

person Mladen B.    schedule 07.06.2019