Iframe cookies браузер заблокировал
Edit3: некоторые сценарии AJAX+serverside, по-видимому, способны обойти проблему, но это выглядит очень похоже на ошибку, плюс он открывает совершенно новый набор безопасности. Я не хочу, чтобы мои приложения использовали комбинацию bug+security hole только потому, что это легко.
"правка":политика P3P была основной причиной, полное объяснение ниже.
Я заставил его работать, но решение немного сложное, так что потерпите меня.
как есть, Internet Explorer дает более низкий уровень доверия страницам IFRAME (т. е. называет это "сторонним" контентом). Если страница внутри IFRAME не имеет Политики конфиденциальности, ее куки-файлы блокируются (что указывается значком глаза в строке состояния, когда вы нажимаете на него, он показывает вам список заблокированных URL-адресов).
(Я попытался установить идентификатор сеанса в форму и загрузить его из переменных POST. было бы, но по политическим причинам я не мог этого сделать.)
можно сделать страницу внутри IFRAME более надежной: если внутренняя страница отправляет заголовок P3P с политикой конфиденциальности, приемлемой для IE, файлы cookie будут приняты.
создать политику p3p
хорошей отправной точкой является W3C в учебнике. Я прошел через него, скачал редактор политики конфиденциальности IBM и там я создал представление политики конфиденциальности и дал ему имя, чтобы ссылаться на него (здесь это было policy1 ).
Примечание: на данный момент вам действительно нужно узнать, имеет ли ваш сайт политику конфиденциальности, а если нет, создайте его - собирает ли он пользовательские данные, какие данные, что он делает с ним, кто имеет к нему доступ и т. д. Вам нужно найти эту информацию и думаю об этом. просто хлопнув вместе несколько тегов не будет вырезать его. этот шаг не может быть сделан исключительно в программном обеспечении и может быть очень политическим (например, " должны ли мы продать наш клик статистика?").
(например, "сайт управляется компанией ACME Ltd., он использует анонимные идентификаторы за сеанс для своей работы, собирает пользовательские данные только если это явно разрешено и только для следующих целей, данные хранятся только до тех пор, пока это необходимо, только наша компания имеет доступ к нему и т. д. так далее.").
(при редактировании с помощью этого инструмента можно просматривать ошибки / пропуски в политике. Также очень полезна вкладка "HTML Policy": внизу она имеет " Policy Оценка " - быстрая проверка, будет ли политика заблокирована настройками IE по умолчанию)
редактор экспортирует в a .файл p3p, который представляет собой XML-представление вышеуказанной политики. Кроме того, он может экспортировать "компактную версию" этой политики.
ссылка на политика
policyref является относительным URI к ссылочному файлу политики (который, в свою очередь, ссылается на политику конфиденциальности), CP является компактным представлением политики. обратите внимание, что комбинация заголовков P3P в Примере может быть неприменимо на вашем конкретном веб-сайте; ваши заголовки P3P должны правдиво представлять вашу собственную политику конфиденциальности!
в этой конфигурации сглаз не появляется, куки сохраняются даже в IFRAME, и приложение работает.
несколько человек предложили " просто шлепнуть некоторые теги в ваш заголовок P3P, пока сглаз не даст вверх."
теги-это не только куча битов, у них есть значения реального мира, и их использование дает вам реальный мир обязанности!
например, притворяться, что вы никогда не собираете пользовательские данные, может сделать браузер счастливым, но если вы действительно собираете пользовательские данные, P3P противоречит реальности. Просто и ясно, вы целенаправленно лжете своим пользователям, и это может быть преступное поведение в некоторых странах. Как в "иди в тюрьму, не собирают $200".
- NOI: "веб-сайт не собирает идентифицированные данные."(как только есть какая-либо настройка, логин или сбор данных (***** аналитика, кто-нибудь?), ты должны подтвердите это в своем P3P)
- STP: информация сохраняется для достижения заявленной цели. Это требует информация должна быть отброшена как можно скорее. Сайты должны иметь политику, которая устанавливает сроки уничтожения. Политика хранения должна быть включена в политику конфиденциальности сайта или связана с ней.(так что если вы пошлете STP но у вас нет политики хранения, вы мая будет считаться мошенничеством. Насколько это круто? Нисколько.)
Я не адвокат, но я не хочу идти в суд, чтобы узнать, является ли заголовок P3P действительно юридически обязывающий или если вы можете пообещать своим пользователям что-либо, не желая выполнять свои обещания.
Я провел большую часть своего дня, изучая эту вещь P3P, и я чувствую необходимость поделиться тем, что я узнал.
Я заметил, что концепция P3P очень устарела и, похоже, действительно используется/применяется Internet Explorer (IE).
это хорошая идея, и, к счастью, большую часть времени не предоставление этого заголовка не вызовет никаких проблем (читать браузер предупреждения.) Если ваш веб-сайт / веб-приложение не загружается на другой веб-сайт с помощью фрейма (i). Это где IE становится массивной болью в***. Он не позволит вам установить cookie, если не установлен заголовок P3P.
зная это, я хотел найти ответ на следующие два вопроса:
- кого это волнует? Другими словами, можно ли подать в суд, если я помещу слово "картофель" в заголовок?
- что делают другие компании?
- никому нет дела. Я не могу найти ни одного документа, который предполагает, что эта технология имеет какой-либо юридический вес. Во время моих исследований я не нашел ни одной страны по всему миру, которая приняла закон, который запрещает вам помещать слово "картофель" в заголовок P3P
- и Google, и Facebook помещают ссылку в поле заголовка P3P, ссылаясь на страницу, описывающую, почему у них нет заголовка P3P.
короче говоря-чтобы IE был доволен-добавьте следующую строку в свой PHP-код (другие языки должно выглядеть похоже)
проблема решена, и IE доволен этим картофелем.
я смог заставить сглаз уйти, просто добавив этот небольшой заголовок на сайт в IFrame (PHP-решение):
Не забудьте нажать ctrl+F5 для перезагрузки вашего сайта или Explorer может по-прежнему показывать сглаз, несмотря на то, что он работает нормально. Это, вероятно, главная причина, почему у меня было так много проблем с его работой.
файл политики не был необходим вообще.
но p3p в значительной степени мертв в качестве стандарта на данный момент, и вы можете легко заставить IE работать, не инвестируя время и юридические ресурсы в создание реальной политики p3p. Это потому, что если ваш заголовок политики compact p3p недействителен, т. е. фактически рассматривает его как хорошую политику и принимает сторонние файлы cookie. Таким образом, вы можете использовать заголовок p3p, такой как this
у меня тоже была эта проблема, я думал, что опубликую код, который я использовал в своем проекте MVC2. Будьте осторожны, когда в жизненном цикле страницы вы добавляете в заголовок, или вы получите HttpException"сервер не может добавить заголовок после отправки HTTP-заголовков."Я использовал пользовательский ActionFilterAttribute для метода OnActionExecuting (вызывается до выполнения действия).
любой, у кого есть эта проблема в узле.js.
затем добавьте этот модуль p3p и включите этот модуль в middleware.
Я использую express, поэтому я добавляю его в приложение.js
сначала требуется этот модуль в приложении.js
тогда используйте его как промежуточное ПО
Он добавит заголовки p3p в объект res. Не нужно делать лишних вещей.
вы получите больше информации at:
Если кто-то ищет линию Apache; мы использовали этот.
набор заголовков P3P "CP=\" спасибо IE8\""
Это действительно не имело значения, что мы установили значение CP, пока есть заголовок P3P.
этот пост предоставляет некоторые комментарии к P3P и короткое решение, которое уменьшает проблемы с IE7 и IE8.
я реализовал полную политику P3P раньше, но не хотел снова проходить через хлопоты для нового проекта, над которым я работал. Я нашел эту ссылку полезной для простого решения проблемы, только указав минимальную компактную политику P3P "CAO PSA OUR":
в статье цитируется (теперь сломанная) ссылка на статью Microsoft kb. Политика сделала трюк для я!
Я исследовал эту проблему в отношении входа в систему через службы управления доступом Azure и не смог подключить головку и хвосты чего-либо.
короче говоря, IE не разделяет Куки по зонам (например. Интернет против надежных сайтов).
Итак, если ваша цель IFrame и html-страница находятся в разных P3P зоны не поможет ни с чем.
вы также можете объединить p3p.xml и политика.xml-файлы как таковые:
Я нашел самый простой способ добавить заголовок-прокси через Apache и использовать mod_headers, как таковой:
таким образом, мы прокси все запросы, кроме тех, чтобы /w3c/p3p.xml на наш сервер приложений.
вы можете проверить все это с помощью валидатор W3C
Это будет работать для Internet Explorer, но и для Safari (поскольку Safari также блокирует сторонние куки).
Я знаю, что немного поздно вносить свой вклад в эту тему, но я потерял так много часов, что, возможно, этот ответ поможет кому-то.
Я пытался вызвать сторонний файл cookie на своем сайте, и, конечно, он не работал в Internet Explorer 10, даже на низком уровне безопасности. не спрашивай почему. В iframe я вызывал read_cookie.на PHP (эхо $их помощью) с помощью AJAX.
и я не знаю, почему я не смог установить политику P3P для решения проблема.
во время моего поиска я видел что-то о получении cookie в JSON. Я даже не пытаюсь, потому что думал, что если cookie не пройдет через iframe, он больше не пройдет через массив.
угадайте, что он делает! Поэтому, если вы json_encode свой cookie затем декодировать после вашего ajax запроса, вы получите его!
может быть, есть что-то, что я пропустил, и если бы я сделал, все мои извинения, но я никогда не видел что-то настолько глупо. Третий блок партии печенье для безопасности, почему бы и нет, но пусть это пройдет, если закодированный? Где сейчас охрана?
Я надеюсь, что этот пост поможет кому-то и снова, если я что-то пропустил, и я тупой, пожалуйста, просветите меня!
Я больше не смог загрузить генератор с официального сайта IBM.
Я создал эти файлы в корневой папке веб-приложения
-
.php: просто отправьте дополнительный заголовок:
- содержание p3p.xml
- содержание моей политики.html файл
легко установить когда вы не заботитесь на всех о значении материала p3p.
более подробно см. Мой ответ здесь: установить код P3P в HTML
в Rails 3.2 я использую:
Так считали и мы при разработке iframe-приложения для ВКонтакте.
Но после того, как приложение было разработано (разработка велась в основном в Mozilla Firefox и Google Chrome), выяснилось, что оно неработоспособно в Internet Explorer, к которому позднее присоединились последние версии Opera и Safari.
Под катом подробное описание проблемы и вариантов её решения.
Описание проблемы
Но мы никак не связаны с рекламой и сбором сведений, поэтому рассмотрим варианты решения проблемы.
Cookie в iframe и Internet Explorer
В нашем случае решение для Internet Explorer не заставило себя ждать: проблема рассматривалась множество раз и ответы быстро находятся в гугле.
Решением является посылка HTTP-заголовка следующего содержания:
P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
В частности для PHP это будет выглядеть так:
Cookie в iframe и Opera/Safari
Проблема в этих браузерах появилась не так давно, и поэтому идентифицировать и решить её оказалось немного сложнее.
Поэтому попытаемся рассмотреть другие способы решения проблемы.
Способ 1. Splash Screen вместо первой страницы
Достоинства:
+ простота, пуленепробиваемость
+ независимость от наличия включённого JavaScript в браузере
Недостатки:
— требует дополнительного действия от пользователя
— несолидность (лишняя страница с «непонятным» приветствием)
Способ 2. Редирект при помощи отправки формы
В перечисленных мною способах эмуляции перехода неспроста отсутствует редирект при помощи отправки формы.
- в iframe создаётся форма, action которой ведёт на нужную страницу текущего домена
- форма отправляется посредством JavaScript
При этом не имеет значения тот факт, будет ли отправлена форма методом GET или POST.
Пример реализации с использованием jQuery:
Достоинства:
+ не требует действий от пользователя
Недостатки:
— требуется JavaScript
— требуется пустая страница только лишь для редиректа
Способ 3. Отправка формы в фоне при помощи дополнительного iframe
Является развитием второго способа, в котором ликвидируется недостаток в наличии редиректа.
Пример реализации с использованием jQuery:
Достоинства:
+ не требует действий от пользователя
+ не требуется редирект
Заключение
Браузеры заботятся о нашей приватности, но наличие обходных путей заставляет задуматься – баг ли эти пути или фича. В первом случае через некоторое время после соответствующих заплаток придётся отказаться от решения проблем такими способами. Но, пока они работают, – нет причин для отказа от пользования ими.
Ссылки по теме
UPD: если кто-то подскажет более подходящий блог, то буду очень признателен.
UPD2: переместил в блог Браузеры по рекомендации. (thx agul)
Сторонние куки — это куки, которые установлены другим веб-сайтом, отличным от того, на котором вы сейчас находитесь. Например, cnn.com может иметь кнопку "Нравится" от Facebook на своем сайте. Кнопка "Нравится" будет устанавливать куки, который может быть прочитан Facebook. Такие куки будут рассматриваться как сторонние куки. Некоторые рекламодатели используют эти типы куки для отслеживания ваших посещений по многим веб-сайтам о том, что они рекламируют. Это называется межсайтовое отслеживание.
Примечание: Межсайтовые отслеживающие куки теперь отключены по умолчанию для всех пользователей Firefox. Прочитайте статью Улучшенная защита от отслеживания для получения дополнительной информации, как Firefox защищает вас от отслеживания.
Когда сторонние куки отключены, это может остановить некоторые, но не все типы отслеживания. Если вас беспокоит отслеживание, прочитайте также статьи Как мне включить функцию "Не отслеживать"?, Улучшенная защита от отслеживания в Firefox для ПК и Трекеры и скрипты, которые Firefox блокирует в Улучшенной защите от отслеживания.
Чтобы заблокировать межсайтовые трекеры или все сторонние куки:
Firefox также включает в себя Полную защиту куки в Строгом режиме и в режиме Приватного просмотра, который создаёт "клетку куки" для каждого веб-сайта. Это ограничивает куки сайтом, где они были созданы, так что они не могут отслеживать вас между веб-сайтами.
Некоторые веб-сайты могут не работать должным образом при блокировке сторонних куки, даже с настройкой по умолчанию Кросс-сайт и трекеры в социальных сетях Межсайтовые куки — включая куки социальных сетей .
Чтобы отключить Улучшенную защиту от отслеживания для отдельного веб-сайта:
Чтобы включить Улучшенную защиту от отслежинваия обратно, произведите те же действия.
Эти прекрасные люди помогли написать эту статью:
Станьте волонтёром
Растите и делитесь опытом с другими. Отвечайте на вопросы и улучшайте нашу базу знаний.
Edit3: some AJAX+serverside scripting is apparently capable to sidestep the problem, but that looks very much like a bug, plus it opens a whole new set of security holes. I don't want my applications to use a combination of bug+security hole just because it's easy.
Edit: the P3P policy was the root cause, full explanation below.
a good solution indeed.. i tried creating the privacy policy.. added to my context root. and in my jsp page i am setting the header.. still am not able to get rid of that red eye.. can u help me resolving the problem..
@makerofthings7: YW. I'll migrate it to a non-temporary (sic!) site and will suggest an edit on Security.se, that page was a somewhat hacky proof-of-concept.
22 Answers 22
I got it to work, but the solution is a bit complex, so bear with me.
(I've tried setting the session identifier into the form and loading it from POST variables. This would have worked, but for political reasons I couldn't do that.)
Create a p3p policy
A good starting point is the W3C tutorial. I've gone through it, downloaded the IBM Privacy Policy Editor and there I created a representation of the privacy policy and gave it a name to reference it by (here it was policy1 ).
NOTE: at this point, you actually need to find out if your site has a privacy policy, and if not, create it - whether it collects user data, what kind of data, what it does with it, who has access to it, etc. You need to find this information and think about it. Just slapping together a few tags will not cut it. This step cannot be done purely in software, and may be highly political (e.g. "should we sell our click statistics?").
(e.g. "the site is operated by ACME Ltd., it uses anonymous per-session identifiers for its operation, collects user data only if explicitly permitted and only for the following purposes, the data is stored only as long as necessary, only our company has access to it, etc. etc.").
(When editing with this tool, it's possible to view errors/omissions in the policy. Also very useful is the tab "HTML Policy": at the bottom, it has a "Policy Evaluation" - a quick check if the policy will be blocked by IE's default settings)
The Editor exports to a .p3p file, which is an XML representation of the above policy. Also, it can export a "compact version" of this policy.
Link to the policy
Send the compact header with responses
policyref is a relative URI to the Policy Reference file (which in turn references the privacy policies), CP is the compact policy representation. Note that the combination of P3P headers in the example may not be applicable on your specific website; your P3P headers MUST truthfully represent your own privacy policy!
Several people have suggested "just slap some tags into your P3P header, until the Evil Eye gives up".
The tags are not only a bunch of bits, they have real world meanings, and their use gives you real world responsibilities!
For example, pretending that you never collect user data might make the browser happy, but if you actually collect user data, the P3P is conflicting with reality. Plain and simple, you are purposefully lying to your users, and that might be criminal behavior in some countries. As in, "go to jail, do not collect $200".
- NOI : "Web Site does not collected identified data." (as soon as there's any customization, a login, or any data collection (***** Analytics, anyone?), you must acknowledge it in your P3P)
- STP: Information is retained to meet the stated purpose. This requires information to be discarded at the earliest time possible. Sites MUST have a retention policy that establishes a destruction time table. The retention policy MUST be included in or linked from the site's human-readable privacy policy." (so if you send STP but don't have a retention policy, you may be committing fraud. How cool is that? Not at all.)
I'm not a lawyer, but I'm not willing to go to court to see if the P3P header is really legally binding or if you can promise your users anything without actually willing to honor your promises.
Google Chrome — самый популярный в мире браузер, поэтому и начать разбор отключения блокировки cookie-файлов следует именно с него. Для выполнения поставленной задачи пользователю потребуется выполнить такие действия:
-
Откройте меню веб-обозревателя, нажав по кнопке с тремя точками справа, где выберите «Настройки».
Все настройки будут применены автоматически, поэтому целевые сайты достаточно просто перезагрузить клавишами Ctrl + F5, чтобы начать полноценное взаимодействие без блокировки cookie-файлов.
Mozilla Firefox
Обладатели веб-обозревателя Mozilla Firefox тоже могут столкнуться с задачей, когда необходимо отключить блокировку куки. Разработчики этой программы сделали так, чтобы ограничения устанавливались только для конкретных сайтов, а не для всех них сразу, поэтому снятие их осуществляется следующим образом:
-
Откройте меню браузера и в появившемся списке выберите пункт «Настройки».
Точно таким же образом поступите и со всеми остальными сайтами, ограничение на запись куки для которых следует отключить. Однако обращайте внимание на «Статус», чтобы случайно не удалить веб-ресурсы из белого списка.
Opera
Оформление внешнего вида браузера Opera имеет свои особенности, поэтому принцип отключения блокировки cookie здесь требуется разобрать отдельно.
-
В меню с простой настройкой браузера опуститесь вниз и выберите «Перейти к настройкам браузера».
Яндекс.Браузер
В завершение нужно рассказать и о Яндекс.Браузере, поскольку его пользователи тоже сталкиваются с необходимостью отключения блокировки куки-файлов, если ранее она была настроена. Принцип действия схож с предыдущими инструкциями, однако имеет свои особенности.
-
Для начала, как обычно, через меню веб-обозревателя следует открыть раздел «Настройки».
Мы рады, что смогли помочь Вам в решении проблемы.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Читайте также: