Отказался отображать «https://mytestwebsite.com/?wa=wsignoutcleanup1.0» во фрейме, потому что он установил «X-Frame-Options» на «DENY»

Я использую ADFS 2.0 в качестве процесса аутентификации для приложения, разработанного с использованием asp.net mvc2 и SQL Server 2012. Чтобы решить проблему: Clickjacking (он же Cross-Site Framing или XSF), мы установили X-Frame- Опции со значением DENY в файле web.config.

Шаги для воспроизведения: 1. Войдите в приложение, используя действительные учетные данные, используя браузер Chrome. 2. Система показала мне целевую страницу приложения. 3. Нажмите F12, чтобы открыть параметры инструментов разработчика. 4. Теперь нажмите «Выйти» и перейдите к окну консоли. 5. Система отобразила страницу выхода из ADFS, но я все равно получаю сообщение об ошибке в окне консоли, как указано ниже:

Отказался отображать 'https://mytestwebsite.com/?wa=wsignoutcleanup1.0' в кадр, потому что он установил «X-Frame-Options» на «DENY».

При проверке ViewSource страницы ADFS Sogout я увидел следующее:

<iframe class="Test" src="https://mytestwebsite.com/?wa=wsignoutcleanup1.0">
</iframe>

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


person santosh kumar patro    schedule 08.10.2014    source источник
comment
У вас есть решение?   -  person Shailendra Madda    schedule 10.03.2015
comment
У меня такая же проблема. Вы нашли решение?   -  person Apollo    schedule 25.07.2016


Ответы (1)


Один из вариантов - ничего не делать. Важной частью очистки выхода является удаление файла cookie аутентификации для mytestwebsite.com, который все еще выполняется, поскольку заголовок http все еще обрабатывается, даже если результирующее содержимое iframe не отображается.

Разрешение рендеринга содержимого iframe важно только в том случае, если:

  • Ваше веб-приложение выполняет дальнейшую очистку подписки. т.е. он содержит собственные теги iframe для выхода из других приложений или
  • Ваша STS использует теги ‹img› вместо фреймов для очистки выхода, и вы хотите, чтобы отображалось изображение с зеленой галочкой, которое возвращает WIF, или
  • Вы действительно не хотите, чтобы это безобидное сообщение об ошибке появлялось в консоли вашего браузера.

Если это действительно необходимо, вы можете программно добавить x-frame-options DENY ко всем ответам, кроме очистки подписи WS-federation.

Для приложения ASP.NET MVC вы можете использовать (в Global.asax.cs):

    public override void Init()
    {
        base.Init();
        FederatedAuthentication.WSFederationAuthenticationModule.SigningOut += this.WSFederationAuthenticationModuleOnSigningOut;
    }

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        Response.Headers["X-Frame-Options"] = "DENY";
    }

    private void WSFederationAuthenticationModuleOnSigningOut(object sender, SigningOutEventArgs args)
    {
        if (args.IsIPInitiated)
        {
            Response.Headers.Remove("X-Frame-Options");
        }
    }
person Tom Mulgrew    schedule 18.03.2015