Как мне разрешить этот конфликт между фреймами Facebook и безопасностью браузера? - PullRequest
6 голосов
/ 10 июня 2011

У меня есть приложение на Facebook, которое я создал как приложение FBML.Недавно я заметил, что FBML устарел и что теперь Facebook рекомендует только приложения iframe.Что-то, чего я изначально избегал, потому что я понимаю, что iframes не являются действительным кодом xhtml, и в то время я пытался написать 100% проверенный код для всего.

Однако я также не люблю создавать неподдерживаемые приложения, поэтомуЯ настроил свое приложение на использование полностью визуализированных html-страниц с использованием метода отображения iframe.

Мои страницы отлично отображаются самостоятельно, когда я отображаю их в своем собственном окне, однако они полностью пусты в Safari при визуализации внутрикадр предоставлен Facebook.Сначала я был в замешательстве и не мог понять, почему ничего не отображается, пока друг, использующий Internet Explorer, не сказал мне, что видит следующую ошибку:

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

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

Очевидная причина этого - сервер, отправляющий X-Frame-Options и Firefox и Internet Explorer должны отображать сообщение об ошибке безопасности и фреймов, а браузеры Webkit, такие как Chrome и Safari, отображают бесполезную пустую рамку.У меня есть оборудование, на котором работает сервер Apache, и я написал все html, и я, конечно, никогда явно не отправлял заголовок X-Frame-Options , поэтому я должен предположить, что моя установка php отправляет этот заголовок по умолчанию ввсе страницы, которые он использует как общее улучшение безопасности (или это делает Apache).

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

Кроме того, если избавиться от заголовкаправильный подход, кто-нибудь знает, почему он отправляется и где его отключить?Я работаю на сервере Snow Leopard с установкой по умолчанию apache и php.

1 Ответ

2 голосов
/ 10 июня 2011

Найдите в файлах конфигурации Apache параметр

$sudo grep -ir 'x-frame-options' /etc/apache2

Кредит

...