Çerez Internet Explorer'da IFRAME içine engellendi / kaydedilmedi


392

İki web sitem var, diyelim ki example.comve anotherexample.net. Üzerinde anotherexample.net/page.htmlbir IFRAME SRC="http://example.com/someform.asp". Bu IFRAME, kullanıcının doldurması ve göndermesi için bir form görüntüler http://example.com/process.asp. Formu (" someform.asp") kendi tarayıcı penceresinde açtığımda , hepsi iyi çalışıyor. Ancak, IE 6 veya IE 7'de bir IFRAME olarak yüklediğimde someform.asp, example.com çerezleri kaydedilmez. Firefox'ta bu sorun görünmüyor.

Test amacıyla http://newmoon.wz.cz/test/page.php adresinde benzer bir kurulum oluşturdum .

example.comçerez tabanlı oturumlar kullanır (ve bununla ilgili yapabileceğim hiçbir şey yoktur), bu nedenle çerezler olmadan process.aspyürütülmez. IE'yi bu çerezleri kaydetmeye nasıl zorlarım?

HTTP trafiğini koklamanın sonuçları: GET /someform.asp yanıtında, oturum başına geçerli bir Set-Cookie başlığı (ör. Set-Cookie: ASPKSJIUIUGF=JKHJUHVGFYTTYFY) Vardır, ancak POST /process.asp isteğinde hiç Cookie başlığı yoktur.

Edit3: bazı AJAX + sunucu tarafı komut dosyası görünüşte sorunu ortadan kaldırmak için yetenekli, ama bu bir hata gibi çok görünüyor, artı yepyeni bir güvenlik delikleri kümesi açar . Uygulamalarımın sadece kolay olduğu için bir hata + güvenlik deliği kombinasyonu kullanmasını istemiyorum.

Düzenleme: P3P politikası temel nedeni , aşağıda tam açıklama oldu.


gerçekten iyi bir çözüm .. gizlilik politikasını oluşturmaya çalıştım .. bağlam köküme eklendi ... ve jsp sayfamda başlığı ayarlıyorum .. hala o kırmızı gözten kurtulamıyorum .. u yardımcı olabilir bana sorunu çözme ..
user902490


@ makerofthings7: YW. Geçici olmayan (sic!) Bir siteye taşıyacağım ve Security.se'de bir düzenleme önereceğim, bu sayfa biraz kaba bir kavram kanıtıydı.
Piskvor binadan ayrıldı

2
Windows 10 / Internet Explorer 11'de ( msdn.microsoft.com/en-us/library/… ) P3P'yi çalıştırmayı denemeye çalışmayın . P3P hiç çalışmıyor, bu yüzden ne yaparsanız yapın çerezler depolanmayacaktır. Burada Kanıtı yanı enhanceie.com/test/cookie
puco

Yanıtlar:


429

İşe yaradım, ama çözüm biraz karmaşık, bu yüzden bana katlan.

Ne oluyor

Olduğu gibi, Internet Explorer IFRAME sayfalarına daha az güven verir (IE bu "üçüncü taraf" içeriği çağırır). IFRAME içindeki sayfanın bir Gizlilik Politikası yoksa, çerezleri engellenir (durum çubuğundaki göz simgesiyle gösterilir, tıkladığınızda, engellenen URL'lerin bir listesini gösterir).

Şeytan gözü
(kaynak: piskvor.org )

Bu durumda, çerezler engellendiğinde, oturum kimliği gönderilmez ve hedef komut dosyası bir 'oturum bulunamadı' hatası atar.

(Oturum tanımlayıcısını forma ayarlamayı ve POST değişkenlerinden yüklemeyi denedim. Bu işe yarardı , ancak politik nedenlerle bunu yapamadım.)

IFRAME içindeki sayfayı daha güvenilir hale getirmek mümkündür: iç sayfa IE için kabul edilebilir bir gizlilik politikasına sahip bir P3P başlığı gönderirse, çerezler kabul edilir .

Nasıl çözeceksin

Bir p3p politikası oluşturma

İyi bir başlangıç ​​noktası W3C öğreticisidir . Bu sorunu yaşadım, IBM Gizlilik Politikası Düzenleyicisi'ni indirdim ve orada gizlilik politikasının bir temsilini oluşturdum ve buna referans olması için bir ad verdim (işte burada policy1).

NOT : bu noktada, aslında sitenizin bir gizlilik politikasına sahip olup olmadığını ve oluşturmuyorsanız, kullanıcı verilerini toplayıp toplamadığını, ne tür veriler, onunla ne yaptığını, kime erişebileceğini, Bu bilgiyi bulup düşünmelisiniz . Sadece birkaç etiketi tokatlamak kesmeyecek.Bu adım yalnızca yazılımda yapılamaz ve oldukça politik olabilir (örneğin, "tıklama istatistiklerimizi satmalı mıyız?").

(ör. "site ACME Ltd. tarafından işletilmektedir, çalışması için oturum başına anonim tanımlayıcılar kullanır, kullanıcı verilerini yalnızca açıkça izin verildiğinde toplar ve yalnızca aşağıdaki amaçlar için veriler yalnızca gerektiği kadar saklanır, yalnızca şirketimiz ", vb. erişimi vardır").

(Bu araçla düzenleme yaparken, politikadaki hataları / eksiklikleri görüntülemek mümkündür. "HTML Politikası" sekmesi de çok yararlıdır: altta "Politika Değerlendirmesi" vardır - politikanın engellenip engellenmeyeceğini hızlı bir şekilde kontrol edin IE'nin varsayılan ayarlarına göre)

Editör, yukarıdaki politikanın XML temsili olan bir .p3p dosyasına aktarır. Ayrıca, bu politikanın "kompakt bir sürümünü" dışa aktarabilir.

Politika bağlantısı

Ardından bir Politika Referans dosyası ( http://example.com/w3c/p3p.xml) gerekiyordu (sitenin kullandığı gizlilik politikalarının bir dizini):

<META>
  <POLICY-REFERENCES>
    <POLICY-REF about="/w3c/example-com.p3p#policy1">
      <INCLUDE>/</INCLUDE>
      <COOKIE-INCLUDE/>
    </POLICY-REF>
  </POLICY-REFERENCES>
</META>

<INCLUDE>Gösterileri (benim durumumda, bütün bölge cinsinden) Bu ilkeyi kullanacak tüm URI'ları. Editör'den dışa aktardığım politika dosyası şuraya yüklendi:http://example.com/w3c/example-com.p3p

Kompakt başlığı yanıtlarla gönderin

Web sunucusunu example.com'daki kompakt üstbilgiyi aşağıdaki gibi yanıtlarla gönderecek şekilde ayarladım:

HTTP/1.1 200 OK 
P3P: policyref="/w3c/p3p.xml", CP="IDC DSP COR IVAi IVDi OUR TST"
// ... other headers and content

policyrefPolitika Referans dosyasına ilişkin göreli bir URI'dır (bu da gizlilik politikalarına atıfta bulunur), CPkompakt politika sunumudur. Örnekteki P3P başlıklarının birleşiminin web sitenizde geçerli olmayabilir; P3P başlıklarınız kendi gizlilik politikanızı doğru bir şekilde temsil etmelidir ZORUNLU!

Kar!

Bu yapılandırmada, Nazar gözükmez, çerezler IFRAME içine kaydedilir ve uygulama çalışır.

Düzenleme: Davalardan korunmak istemediğiniz sürece ne YAPILMAZ

Birkaç kişi "Nazardan vazgeçene kadar P3P başlığınıza bazı etiketleri yapıştırın" önerisinde bulundu.

Etiketler sadece bir parça bit değildir, gerçek dünya anlamları vardır ve kullanımları size gerçek dünya sorumlulukları verir !

Örneğin, hiç kullanıcı verilerini toplamıyormuş gibi yapmak tarayıcıyı mutlu edebilir, ancak kullanıcı verilerini gerçekten toplarsanız, P3P gerçeklikle çakışıyor demektir. Basit ve basit, kullanıcılarınıza bilerek yalan söylüyorsunuz ve bu bazı ülkelerde suç davranışı olabilir. Olduğu gibi, "hapse gidin, 200 $ toplamak yok".

Birkaç örnek ( etiketlerin tamamı için bkz. P3pwriter ):

  • NOI : "Web Sitesi tanımlanan verileri toplamıyor ." (herhangi bir özelleştirme, oturum açma veya veri toplama (***** Analytics, herhangi biri?) olduğunda, P3P'nizde onaylamanız gerekir )
  • STP : Belirtilen amacı karşılamak için bilgiler saklanır. Bu, bilgilerin mümkün olan en erken zamanda atılmasını gerektirir. Sitelerin bir imha süresi tablosu oluşturan bir saklama politikası olması ZORUNLUDUR. Saklama politikası, sitenin insan tarafından okunabilir gizlilik politikasına dahil edilmeli veya bu politikadan bağlantılı OLMALIDIR. "(Bu nedenle, gönderir STPancak saklama politikası yoksa , sahtekarlık yapıyor olabilirsiniz . Bu ne kadar havalı mı? Hiç de değil.)

Ben bir avukat değilim, ama P3P başlığının gerçekten yasal olarak bağlayıcı olup olmadığını veya kullanıcılarınıza vaatlerinizi yerine getirmeye istekli olmadan bir şey vaat edebileceğinizi görmek için mahkemeye gitmeye istekli değilim .


Ben% 95 tamamlandı, ama başlığım sadece dedi: P3P: CP = "...." ve IE7 çalışmasını sağlayan, ancak IE6 değil ... policyref bağlantı içermiyordu şimdi iyi çalışıyor. Teşekkürler!
AndreasKnudsen

4
IBM düzenleyicisine bağlantı artık çalışmıyor. Wayback Machine ile bu çalışma bağlantısını bulabildim
ripper234

34
Bu konularda bazı haberler: -IBM editörü şu adreste bulunabilir: softpedia.com/get/Security/Security-İlgili /… -P3P standartları 'ölü' gibi görünüyor. Google ve facebook gibi büyük şirketler artık IE güvenliğini atlamak için geçersiz P3P başlıkları kullanıyor. Şu gönderilere bakın: cylab.cmu.edu/research/techreports/2010/tr_cylab10014.html zdnet.com/blog/facebook/… techpolicy.com/…
Davide Icardi

7
Benzer bir sorunu olan birine yardımcı olabilecek başka bir bilgi: alan adları farklı güvenlik bölgelerinde ise (örneğin birinci taraf internet ve üçüncü taraf intranet ise) testlerimden, P3P doğru ise üçüncü taraf çerezlerini de kabul etmek mümkün değildir. yapılandırdı. Çerez her zaman engellenir.
Davide Icardi

1
'Üçüncü taraf' teriminin birinin düşündüğü kadar açık olmadığını belirtmek önemlidir. Bir iframe, çevreleyen siteye göre üçüncü taraf içeriğe sahipse ve geçerli bir gizlilik politikasına sahipse ve iframe'deki ana siteden gelen bir görünüme yönlendiriyorsa, bu görünüm geçerli bir gizlilik politikasına sahip olmadıkça IE olmaz çerezlerine güven. Bu görünüm iframe'i içeren siteyle aynı siteden geliyor olsa bile.
Ücretler

168

Günümün büyük bir bölümünü bu P3P olayına bakarak harcadım ve öğrendiklerimi paylaşma ihtiyacını hissediyorum.

P3P konseptinin çok eski olduğunu ve sadece gerçekten Internet Explorer (IE) tarafından kullanıldığını / uygulandığını fark ettim.

En basit açıklama şudur: IE çerezleri kullanıyorsanız bir P3P başlığı tanımlamanızı ister.

Bu güzel bir fikir ve neyse ki çoğu zaman bu üstbilgiyi sağlamayan sorunlara neden olmaz (tarayıcı uyarılarını okuyun). Web siteniz / web uygulamanız (i) Frame kullanılarak başka bir web sitesine yüklenmedikçe. IE burada *** büyük bir acı olur. P3P başlığı ayarlanmadığı sürece bir çerez ayarlamanıza izin vermez.

Bunu bilerek aşağıdaki iki soruya bir cevap bulmak istedim:

  1. Kimin umrunda? Başka bir deyişle, "Patates" kelimesini başlığa koyarsam dava açabilir miyim?
  2. Diğer şirketler ne yapıyor?

Bulgularım:

  1. Kimsenin umrunda değil. Bu teknolojinin herhangi bir yasal ağırlığı olduğunu gösteren tek bir belge bulamıyorum. Araştırmam sırasında P3P başlığına "Patates" kelimesini koymanızı engelleyen bir yasa kabul eden tek bir ülke bulamadım
  2. Hem Google hem de Facebook, P3P üstbilgi alanlarına neden P3P üstbilgilerine sahip olmadıklarını açıklayan bir sayfaya atıfta bulunan bir bağlantı yerleştirir.

Konsept 2002'de doğdu ve beni bu eski ve yasal olarak uygulanmayan kavramın hala IE içindeki geliştiricilere zorladığını şaşırtıyor. Bu üstbilginin herhangi bir yasal etkisi yoksa, bu üstbilginin yoksayılması gerekir (veya alternatif olarak konsolda bir uyarı veya bildirim oluşturması gerekir). Zorla değil! Şimdi kesinlikle hiçbir şey yapmaz kodumu (ve istemciye bir başlık göndermek) bir satır koymak zorundayım.

Kısacası - IE'yi mutlu etmek için - PHP kodunuza aşağıdaki satırı ekleyin (Diğer diller benzer görünmelidir)

header('P3P: CP="Potato"');

Sorun çözüldü ve IE bu patates ile mutlu.


6
Gerçekten de, bu konu yayınlandığı 2008 yılından bu yana önemli ölçüde değişti. Web ilerledi ve P3P ile ilgili fikir birliği "artık kimsenin umurunda değil." Bu durumda IE'nin geçersiz girdi ile ne yaptığını bilmek güzel.
Piskvor

19
Ah adamım, bu gizli internet explorer mücevherlerinden biri! HttpContext.Current.Response.AddHeader ("p3p", "CP = \" Internet Explorer Idiots Tarafından Programlandı \ ""); Bu benim için çalışıyor!
Michiel Cornille

6
@Mvision Geliştiricileri suçlamayın, bu avukatlar ve yönetim ile ilgili bir konudur? Çoğu geliştiricinin bu özelliğin Patates benzeri çözümlerle sonuçlanacağını fark ettiğini tahmin ediyorum :-)
KajMagnus

5
ASP.Net için bunu web config'inize ekleyebilirsiniz: '<system.webServer> <handlers> <httpProtocol> <customHeaders> <add name = "p3p" value = "CP = & quot; Internet Explorer Bunu Gerekiyor Üçüncü Taraf Çerezlerini Ayarla & quot; " /> </customHeaders> </httpProtocol> </handlers> </system.webServer> '
Rick Kierner

1
Oh, bu daha yüksek olmalı! Bir IE 11 iframe çalışma çerezleri almaya çalışırken saat geçirdim. Her türlü P3P kombinasyonunu denemek ve çerez türüne / süresinin dolmasına bağlı olarak çeşitli sonuçlar elde etmek. Sonunda Potatobenim P3P koymak çözüldü. haha!
dtbaker

55

Ben sadece IFrame (PHP çözümü) siteye bu küçük başlık ekleyerek nazar ortadan kaldırmak başardı:

header('P3P: CP="NOI ADM DEV COM NAV OUR STP"');

Sitenizi yeniden yüklemek için ctrl + F5 tuşlarına basmayı unutmayın, aksi halde Explorer iyi çalışıyor olmasına rağmen nazarını gösterebilir. Muhtemelen işe koyulmamda bu kadar çok sorun yaşamamın temel nedeni budur.

Hiçbir politika dosyası gerekli değildi.

Düzenleme: IFrames çerezleri ile ilgili sorunu açıklayan güzel bir blog girişi buldum. Ayrıca C # kodunda hızlı bir düzeltme var: Çerçeveler, ASPX Sayfaları ve Reddedilen Çerezler


10
IANAL, ancak P3P politikası yasal olarak bağlayıcı görünüyor. Buradaki kullanıcılara ne vaat ettiğinizi biliyor musunuz yoksa EvilEye yok olana kadar etiketleri karıştırdınız mı? Bence tarayıcı önbelleğe almanın en büyük sorunu olmayacağını düşünüyorum: " NOI : Web Sitesi belirlenen verileri toplamıyor. STP : Bilgi belirtilen amacı karşılamak için saklanıyor. Bu, bilgilerin mümkün olan en erken zamanda atılmasını gerektirir. bir imha süresi tablosu oluşturan bir saklama politikasına sahip olun. Saklama politikası, sitenin insan tarafından okunabilir gizlilik politikasına dahil edilmeli veya bu politikadan bağlanmalıdır *.
Piskvor binadan ayrıldı

28
Bunun ne anlama geldiğini gerçekten umursamadığımı itiraf etmeliyim, sadece Explorer'da çalışmak için bir şeye ihtiyacım vardı. Siteler, siteyi göstermek için hangi stili 'hatırlamak' için bir çerez kullanan kendi herkese açık olmayan sitelerimizdir. Bu yüzden, evet, nazar kaybolana kadar etiketleri karıştırdım.
Helo

Sorunu burada açıklayan güzel bir blog girişi buldum
Helo

6
P3P'nin artan ilgisizliği. cylab.cmu.edu/files/pdfs/tech_reports/CMUCyLab10014.pdf Çok yasal olarak bağlayıcıysa, şimdi bunu kanıtlayarak dava önceliği olacaktır. Öyle yüksek bir saygıyla görüldü ki, rakiplerimden biri hariç hepsi ilk etapta bir tane yayınlamayı bile rahatsız ediyor. Müşterileri IE ayarını Ortada bırakamazlarsa, çabaya değmeyeceklerini anlamaları gerekir. Çerezler işe yaramazsa, bir sitede kaybedilen satışların oldukça yüksek olması gerekir, alışveriş sepeti onlarsız ölür.
Fiasco Labs

3
Bu cevap kukla bir başlık kullanılmasını önermektedir CP="This_is_not_a_privacy_policy". Bunu yapmak yasal olarak daha az bağlayıcı görünüyor, sanırım (örneğin NOI ve STP ve buna benzer hiçbir şey belirtilmediğinden) ve görünüşe göre IE mutlu ediyor :-)
KajMagnus

21

Bu, diğer cevapların yorumlarına gömüldü, ama neredeyse özledim, bu yüzden kendi cevabını hak ediyor gibi görünüyor.

İncelemek için: IE'nin 3. taraf çerezlerini kabul edebilmesi için dosyalarınızı p3p adlı bir http üstbilgisiyle şu biçimde sunmanız gerekir:

CP="my compact p3p policy"

AMA, p3p bu noktada bir standart olarak hemen hemen öldü ve gerçek bir p3p politikası oluştururken zaman ve yasal kaynaklara yatırım yapmadan IE'yi kolayca çalıştırabilirsiniz. Bunun nedeni, kompakt p3p ilke başlığınız geçersizse IE'nin bunu gerçekten iyi bir ilke olarak ele alıp 3. taraf çerezlerini kabul etmesidir. Böylece böyle bir p3p başlığı kullanabilirsiniz

CP="This site does not have a p3p policy."

İsteğe bağlı olarak, Google ve Facebook'un yaptığı gibi neden p3p politikanızın olmadığını açıklayan bir sayfaya bağlantı ekleyebilirsiniz (burada: https://support.google.com/accounts/answer/151657 ve burada: https : //www.facebook.com/help/327993273962160/ ).

Son olarak, 3. taraf siteden sunulan tüm dosyaların yalnızca çerezi ayarlayana değil, p3p başlığına sahip olması gerektiğini unutmayın, bu yüzden bunu PHP, asp.net, vb. kodu. Muhtemelen web sunucusu düzeyinde (örneğin IIS veya Apache'de) kurulum yapmak daha iyidir.


20

Ben de bu sorunu vardı, MVC2 projemde kullandığım kodu göndereceğini düşündüm. Üstbilgiye eklediğiniz sayfa yaşam döngüsünde dikkatli olun veya HttpException " Sunucu HTTP üstbilgileri gönderildikten sonra üstbilgi ekleyemez ." OnActionExecuting yönteminde (eylem yürütülmeden önce çağrılan) özel bir ActionFilterAttribute kullandım.

/// <summary>
/// Privacy Preferences Project (P3P) serve a compact policy (a "p3p" HTTP header) for all requests
/// P3P provides a standard way for Web sites to communicate about their practices around the collection, 
/// use, and distribution of personal information. It's a machine-readable privacy policy that can be 
/// automatically fetched and viewed by users, and it can be tailored to fit your company's specific policies.
/// </summary>
/// <remarks>
/// More info http://www.oreillynet.com/lpt/a/1554
/// </remarks>
public class P3PAttribute : ActionFilterAttribute
{
    /// <summary>
    /// On Action Executing add a compact policy "p3p" HTTP header
    /// </summary>
    /// <param name="filterContext"></param>
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpContext.Current.Response.AddHeader("p3p","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");

        base.OnActionExecuting(filterContext);
    }
}

Örnek kullanım:

[P3P]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewData["Message"] = "Welcome!";

        return View();
    }

    public ActionResult About()
    {
        return View();
    }
}

14

Bu konuda büyük bir konudur, ancak burada veya başka bir yerde (sadece kaçırdım özür dilerim) gönderilmeyen önemli bir detayın (en azından benim durumumda gerekli olduğunu) buldum P3P hattı olması gerektiğiydi 3. parti sunucudan gönderilen HER dosyanın üstbilgisinde , hatta Javascript dosyaları veya resimler gibi çerezleri ayarlamıyor veya kullanmıyor. Aksi takdirde çerezler engellenir. Buradaki bir gönderide daha fazlasına sahibim: http://posheika.net/?p=110


5

Node.js'de bu sorunu yaşayan herkes.

Ardından bu p3p modülünü ekleyin ve bu modülü ara katman yazılımında etkinleştirin.

npm install p3p

Express kullanıyorum, bu yüzden app.js'ye ekliyorum

Öncelikle app.js'de bu modülü gerektirir

var express = require('express');
var app = express();
var p3p = require('p3p');

sonra ara katman yazılımı olarak kullanın

app.use(p3p(p3p.recommended));

Res nesnesine p3p başlıkları ekler. Ekstra bir şey yapmaya gerek yok.

Daha fazla bilgi için:

https://github.com/troygoode/node-p3p


5

Apache hattı arayan varsa; bunu kullandık.

Üstbilgi kümesi P3P "CP = \" Teşekkürler IE8 \ ""

P3P başlığı olduğu sürece CP değerini neye ayarladığımız gerçekten önemli değildi.


4

Yapılacak olası bir şey, etki alanını araçlarda izin verilen sitelere eklemektir -> internet seçenekleri -> gizlilik -> siteler: somedomain.com -> izin ver -> Tamam.


23
Evet, yalnızca bilgisayarınızda çalışmasını önemsiyorsanız. Bunu her ziyaretçiye önermek tamamen pratik değil.
Piskvor binadan ayrıldı

3

Bu yazı , P3P hakkında bazı yorumlar ve IE7 ve IE8 ile ilgili sorunları azaltan kısa bir çözüm sunuyor.


1
Makaleyi alıntılamak için: "temelde" Kişisel verilerinizi toplamıyoruz "diyor - bununla iyi şanslar. Ben aslında bu politikada belirlenen belirteçleri yerine sıfır siteler gördüm ( herhangi bir veri toplama değil, hatta anonim istatistiksel veri - sunucu erişim günlükleri, kimse?). Sunulan diğer politikaya ulaşmak da oldukça zor (herhangi bir web analitiğiniz var mı? Bam, sadece P3P politikanızı kırdınız). Dolayısıyla makale "sadece açık bir şekilde yalan söyleme, kimsenin umurunda değil" şeklinde özetlenebilir. Gerçekten de tüm internette en yararlı makale .
Piskvor binadan

Makalenin başka bir bölümünü alıntılamak için: "İnternette P3P, kompakt politikalar ve IE7'nin gereksinimleri hakkında şaşırtıcı derecede az iyi, ücretsiz bilgi var - ve IE7, çerezinizin neden engellendiği gibi kesinlikle yararlı bir hata ayıklama çıktısı vermiyor." Bu tamamen doğru gibi görünüyor! Günümün çoğunu neden IE7 / 8'in diğer tarayıcılardan farklı davrandığını keşfetmeye çalışırken geçirdim, bu yazıyı bulmaktan son derece mutlu oldum. Muhtemelen P3P'nin ölü bir özellik olduğunu ve çoğu insanın sadece onun etrafında çalışmayı tercih ettiğini anlamanın zamanı geldi. Bu yazı muhtemelen konuyla ilgili en yararlı olanıdır.
Henrik Aasted Sørensen

"İnternette şaşırtıcı derecede az iyi, ücretsiz bilgi var" - bu 2007'de doğru olabilirdi (yazıldığı zaman), ama şimdi internette çok fazla bilgi var, hatta P3P politikasını oluşturmanıza yardımcı olan ücretsiz araçlar bile P3P'yi savunmuyorum, ama "eh vidalayın, sadece gitmesini sağlayın" demek pahalı sonuçlara yol açabilir (siteniz hakkında çok kesin iddialarda bulunduğunuz gibi) .P3P'nin yasal olarak bağlayıcı olup olmadığı Henüz test edilmedi (IIRC), ancak bu davanın alıcı tarafında olmak istemem.
Piskvor

1
@Piskvor - Lütfen ücretsiz P3P araçlarını gönderin. Gitmeye çalıştığım her şey bağlantı çiftlikleri ve sahte arama ile satın alındı. IBM ücretsiz araçlarını kullandı. P3P desteği, 2012'de kuraklıkta otların ölmesi gibi görünüyor.
Fiasco Labs

2
IBM Alphaworks p3p editörünü softpedia'da burada bulabilirsiniz: softpedia.com/get/Security/Security-Related/…
Fiasco Labs

3

Burada bahsetmediğim bir çözüm , çerezler yerine oturum depolama alanı kullanmaktır. Tabii ki bu herkesin gereksinimlerine uygun olmayabilir, ancak bazı durumlarda kolay bir düzeltme.


1
İyi bir nokta. Bu sorunun gönderildiği tarihte, özellikle IE'de oturum depolaması desteği olmadığını unutmayın. Ama zamanlar değişiyorlar;)
Piskvor

3

Azure Access Control Services aracılığıyla oturum kapatma konusunda bu sorunu araştırıyordum ve hiçbir şeyin başını ve kuyruklarını bağlayamadım.

Sonra bu yazının üzerine tökezledi https://blogs.msdn.microsoft.com/ieinternals/2011/03/10/beware-cookie-sharing-in-cross-zone-scenarios/

Kısacası IE, çerezleri bölgeler arasında paylaşmaz (ör. İnternet ve Güvenilir siteler).

Bu nedenle, IFrame hedefiniz ve html sayfanız farklı bir bölgedeyse P3P hiçbir şeye yardımcı olmaz.


Bunun 2016'da hala alakalı olmasına şaşırdım :)
Piskvor

1
IE'deki P3P'nin durumu burada belgelenmiştir: msdn.microsoft.com/en-us/library/mt146424(v=vs.85).aspx , gelecek parlak görünüyor :)
Frode Nilsen


2

Daha önce tam bir P3P politikası uyguladım ama üzerinde çalıştığım yeni bir proje için tekrar uğraşmak istemedim. Bu bağlantıyı sorunun basit bir çözümü için yararlı buldum, sadece "CAO PSA BİZİMİZ" in minimum bir P3P politikasını belirtmek zorunda kaldım:

http://blog.sweetxml.org/2007/10/minimal-p3p-compact-policy-suggestion.html

Makale, bir Microsoft kb makalesine (şimdi bozuk) bir bağlantıdan alıntı yapmaktadır. Politika benim için hile yaptı!


1

Ayrıca p3p.xml ve policy.xml dosyalarını aşağıdaki gibi birleştirebilirsiniz:

/home/ubuntu/sites/shared/w3c/p3p.xml

<META xmlns="http://www.w3.org/2002/01/P3Pv1">
  <POLICY-REFERENCES>
    <POLICY-REF about="#policy1">
      <INCLUDE>/</INCLUDE>
      <COOKIE-INCLUDE/>
    </POLICY-REF>
  </POLICY-REFERENCES>
  <POLICIES>
    <POLICY discuri="" name="policy1">
      <ENTITY>
        <DATA-GROUP>
          <DATA ref="#business.name"></DATA> 
          <DATA ref="#business.contact-info.online.email"></DATA> 
        </DATA-GROUP>
      </ENTITY>
      <ACCESS>
        <nonident/>
      </ACCESS>
      <!-- if the site has a dispute resolution procedure that it follows, a DISPUTES-GROUP should be included here -->
      <STATEMENT>
        <PURPOSE>
          <current/>
          <admin/>
          <develop/>
        </PURPOSE>
        <RECIPIENT>
          <ours/>
        </RECIPIENT>
        <RETENTION>
          <indefinitely/>
        </RETENTION>
        <DATA-GROUP>
          <DATA ref="#dynamic.clickstream"/>
          <DATA ref="#dynamic.http"/>
        </DATA-GROUP>
      </STATEMENT>
    </POLICY>
  </POLICIES>
</META>

Bir başlık eklemek için en kolay yolu Apache üzerinden proxy ve mod_headers kullanmak gibi buldum:

<VirtualHost *:80>
  ServerName mydomain.com

  DocumentRoot /home/ubuntu/sites/shared/w3c/

  ProxyRequests off
  ProxyPass /w3c/ !
  ProxyPass / http://127.0.0.1:8080/
  ProxyPassReverse / http://127.0.0.1:8080/
  ProxyPreserveHost on

  Header add p3p 'P3P:policyref="/w3c/p3p.xml", CP="NID DSP ALL COR"'
</VirtualHost>

Bu yüzden /w3c/p3p.xml dışındaki tüm istekleri uygulama sunucumuza proxy yapıyoruz.

Hepsini W3C doğrulayıcı ile test edebilirsiniz


Bu, başlığı 304 istekle gönderiyor mu? 304 ile bir P3P başlığı gönderirseniz IE'nin bazı sürümleri gerçekten çerezleri siler.
Joshua

Üzgünüm, artık bu kod üzerinde çalışmadığım için bilmiyorum. Bu bir sorun varsa, muhtemelen Apache'deki durum kodunu 200'e zorlayabilirsiniz.
Kris


1

Bu konudaki katkılarımı koymak için biraz geç olduğunu biliyorum ama çok fazla saat kaybettim, belki bu cevap birine yardımcı olacaktır.

Sitemde bir üçüncü taraf çerezi çağırmaya çalışıyordum ve tabii ki düşük bir güvenlik düzeyinde bile Internet Explorer 10'da çalışmıyor ... nedenini sorma. İç çerçevede ajax ile bir read_cookie.php (echo $ _COOKIE) çağırıyordum.

Sorunu çözmek için P3P politikasını neden belirleyemediğimi bilmiyorum ...

Arama sırasında JSON'daki çerezi çalıştırmayla ilgili bir şey gördüm. Çerez bir iframe'den geçmezse, artık bir dizi üzerinden geçmeyeceğini düşündüm çünkü ben denemiyorum ...

Tahmin et ne oldu! Eğer çerezinizi json_encode ederseniz, ajax isteğinizden sonra kodunu çözerseniz, alırsınız!

Belki özlediğim bir şey var ve eğer yaparsam, tüm özür dilerim, ama hiç bu kadar aptalca bir şey görmedim. Güvenlik için üçüncü taraf çerezlerini engelleyin, neden olmasın, ancak kodlanırsa geçmesine izin verin? Güvenlik nerede şimdi?

Umarım bu yazı birisine yardım eder ve bir şey kaçırırsam ve aptalsam, lütfen beni eğit!


İlginç ... yani JS'deki çerezi deşifre mi ediyorsun?
Piskvor

Nop, ben sadece php fonksiyonu json_encode () ile bir JSON dizisinde çerez yazıyorum sonra ajax JSON çağrısı ile geri alıyorum.
pierreaurelemartin

1

Bu nihayet benim için çalıştı (çok fazla acele ettikten ve IBM'in politika oluşturucusunu kullanarak bazı politikalar oluşturduktan sonra). Politika oluşturucuyu buradan indirebilirsiniz: http://www.softpedia.com/get/Security/Security-Related/P3P-Policy-Editor.shtml

Jeneratörü artık resmi IBM web sitesinden indiremedim.

Bu dosyaları Web Uygulamamın kök klasöründe oluşturdum

/index.php
/w3c/policy.html (Human readable format)
/w3c/p3p.xml
/w3c/policy.p3p
  1. Index.php: Ek bir başlık daha göndermeniz yeterlidir:
header('P3P: policyref="/w3c/p3p.xml", CP="ALL DSP NID CURa ADMa DEVa HISa OTPa OUR NOR NAV DEM"');
  1. P3p.xml içeriği
<META>
    <POLICY-REFERENCES>
        <POLICY-REF about="/w3c/policy.p3p#App">
            <INCLUDE>/</INCLUDE>
            <COOKIE-INCLUDE/>
        </POLICY-REF>
    </POLICY-REFERENCES>
</META>
  1. Policy.html dosyamın içeriği

<html>
<head>
<STYLE type="text/css">
title { color: #3333FF}
</STYLE>
<title>Privacy Statement for YOUR COMPANY NAME</title>
</head>
<body>
<h1 class="title">Privacy Policy</h1>
<!-- "About Us" section of privacy policy -->
<h2>About Us</h2>
<p>This is a privacy policy for YOUR COMPANY NAME.
Our homepage on the Web is located at <a href="YOURWEBSITE">
YOURWEBSITE</a>.
The full text of our privacy policy is available on the Web at 
<a href="ABSOLUTE URL OF THIS FILE">
ABSOLUTE URL OF THIS FILE</a>
This policy does not tell users where they can go to exercise their opt-in or opt-out options.
<p>We invite you to contact us if you have questions about this policy.
You may contact us by mail at the following address:
<pre>FIRSTNAME LASTNAME
YOUR ADDRESS HERE
</pre>
<p>You may contact us by e-mail at 
<a href="mailto:info@YOURMAIL.de">
info@YOURMAIL.eu</a>. 
You may call us at TELEPHONENUMBER.
<!-- "Privacy Seals" section of privacy policy -->
<h2>Dispute Resolution and Privacy Seals</h2>
<p>We have the following privacy seals and/or dispute resolution mechanisms.
If you think we have not followed our privacy policy in some way, they can help you resolve your concern.
<ul>
<li>
<b>Dispute</b>:
Contact us for further information
</ul>
<!-- "Additional information" section of privacy policy -->
<h2>Additional Information</h2>
<p>
This policy is valid for 1 day from the time that it is loaded by a client.
</p>
<!-- "Data Collection" section of privacy policy -->
<h2>Data Collection</h2>
<p>P3P policies declare the data they collect in groups (also referred to as "statements").
This policy contains 1 data group.
<hr width="50%" align="center">
<h3>Group "App control data"</h3>
<p>We collect the following information:
<ul>
<li>HTTP cookies</li>
</ul>
<p>This data will be used for the following purposes:</p>
<ul>
<li>Completion and support of the current activity.</li>
<li>Web site and system administration.</li>
<li>Research and development.</li>
<li>Historical preservation.</li>
<li>Other purposes<p>Control Flow of the application</p></li>
</ul>
<p>This data will be used by ourselves and our agents.
<p>The data in this group has been marked as non-identifiable. This means that there is no
reasonable way for the site to identify the individual person this data was collected from.
<p>The following explanation is provided for why this data is collected:</p>
<blockquote>This cookie data is only used to control the application within an iframe (e.g. a Facebook App)</blockquote>
<!-- "Use of Cookies" section of privacy policy -->
<hr width="50%" align="center">
<h2>Cookies</h2>
<p>Cookies are a technology which can be used to provide you with tailored information from a Web site. A cookie is an element of data that a Web site can send to your browser, which may then store it on your system. You can set your browser to notify you when you receive a cookie, giving you the chance to decide whether to accept it.
<p>Our site makes use of cookies.
Cookies are used for the following purposes:
<ul>
<li>Site administration
<li>Completing the user's current activity
<li>Research and development
<li>Other
(Control Flow of the application)
</ul>
<!-- "Compact Policy Explanation" section of privacy policy -->
<hr width="50%" align="center">
<h2>Compact Policy Summary</h2>
<p>The compact policy which corresponds to this policy is:
<pre>
    CP="ALL DSP NID CURa ADMa DEVa HISa OTPa OUR NOR NAV"
</pre>
<p>The following table explains the meaning of each field in the compact policy.
<center><table width="80%" border="1" cols="2">
<tr><td align="center" valign="top" width="20%"><b>Field</b></td><td align="center" valign="top" width="80%"><b>Meaning</b></td></tr>
<tr><td align="left" valign="top" width="20%"><tt>CP=</tt></td>
<td align="left" valign="top" width="80%">This is the compact policy header; it indicates that what follows is a P3P compact policy.</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>ALL</tt></td>
<td align="left" valign="top" width="80%">
Access to all collected information is available.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>DSP</tt></td>
<td align="left" valign="top" width="80%">
The policy contains at least one dispute-resolution mechanism.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>NID</tt></td>
<td align="left" valign="top" width="80%">
The information collected is not personally identifiable.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>CURa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for completion of the current activity.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>ADMa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for site administration.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>DEVa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for research and development.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>HISa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for historical archival purposes.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>OTPa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for other purposes.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>OUR</tt></td>
<td align="left" valign="top" width="80%">
The data is given to ourselves and our agents.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>NOR</tt></td>
<td align="left" valign="top" width="80%">
The data is not kept beyond the current transaction.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>NAV</tt></td>
<td align="left" valign="top" width="80%">
Navigation and clickstream data is collected.
</td></tr>
</table></center>
<p>The compact policy is sent by the Web server along with the cookies it describes.
For more information, see the P3P deployment guide at <a href="http://www.w3.org/TR/p3pdeployment">http://www.w3.org/TR/p3pdeployment</a>.
<!-- "Policy Evaluation" section of privacy policy -->
<hr width="50%" align="center">
<h2>Policy Evaluation</h2>
<p>Microsoft Internet Explorer 6 will evaluate this policy's compact policy whenever it is used with a cookie.
The actions IE will take depend on what privacy level the user has selected in their browser (Low, Medium, Medium High, or High; the default is Medium.
In addition, IE will examine whether the cookie's policy is considered satisfactory or unsatisfactory, whether the cookie is a session cookie or a persistent cookie, and whether the cookie is used in a first-party or third-party context.
This section will attempt to evaluate this policy's compact policy against Microsoft's stated behavior for IE6.
<p><b>Note:</b> this evaluation is currently experimental and should not be considered a substitute for testing with a real Web browser.
<p><b>Satisfactory policy</b>: this compact policy is considered <em>satisfactory</em> according to the rules defined by Internet Explorer 6.
IE6 will accept cookies accompanied by this policy under the High, Medium High, Medium, Low, and Accept All Cookies settings.
</body></html>

  1. Policy.p3p içeriği
<?xml version="1.0"?>
<POLICIES xmlns="http://www.w3.org/2002/01/P3Pv1">
    <!-- Generated by IBM P3P Policy Editor version Beta 1.12 built 2/27/04 1:19 PM -->

    <!-- Expiry information for this policy -->
    <EXPIRY max-age="86400"/>

<POLICY
    name="App"
    discuri="ABSOLUTE URL TO policy.html"
    xml:lang="de">
    <!-- Description of the entity making this policy statement. -->
    <ENTITY>
    <DATA-GROUP>
<DATA ref="#business.name">COMPANY NAME</DATA>
<DATA ref="#business.contact-info.online.email">info@YOURMAIL.eu</DATA>
<DATA ref="#business.contact-info.online.uri">YOURWEBSITE</DATA>
<DATA ref="#business.contact-info.telecom.telephone.number">YOURPHONENUMBER</DATA>
<DATA ref="#business.contact-info.postal.organization">FIRSTNAME LASTNAME</DATA>
<DATA ref="#business.contact-info.postal.street">STREET</DATA>
<DATA ref="#business.contact-info.postal.city">CITY</DATA>
<DATA ref="#business.contact-info.postal.stateprov">STAGE</DATA>
<DATA ref="#business.contact-info.postal.postalcode">POSTALCODE</DATA>
<DATA ref="#business.contact-info.postal.country">Germany</DATA>
    </DATA-GROUP>
    </ENTITY>

    <!-- Disclosure -->
    <ACCESS><all/></ACCESS>


    <!-- Disputes -->
    <DISPUTES-GROUP>
        <DISPUTES resolution-type="service" service="YOURWEBSITE CONTACT FORM" short-description="Dispute">
            <LONG-DESCRIPTION>Contact us for further information</LONG-DESCRIPTION>
    <!-- No remedies specified -->
        </DISPUTES>
    </DISPUTES-GROUP>

    <!-- Statement for group "App control data" -->
    <STATEMENT>
        <EXTENSION optional="yes">
            <GROUP-INFO xmlns="http://www.software.ibm.com/P3P/editor/extension-1.0.html" name="App control data"/>
        </EXTENSION>

    <!-- Consequence -->
    <CONSEQUENCE>
This cookie data is only used to control the application within an iframe (e.g. a Facebook App)</CONSEQUENCE>

    <!-- Data in this statement is marked as being non-identifiable -->
    <NON-IDENTIFIABLE/>

    <!-- Use (purpose) -->
    <PURPOSE><admin/><current/><develop/><historical/><other-purpose>Control Flow of the application</other-purpose></PURPOSE>

    <!-- Recipients -->
    <RECIPIENT><ours/></RECIPIENT>

    <!-- Retention -->
    <RETENTION><no-retention/></RETENTION>

    <!-- Base dataschema elements. -->
    <DATA-GROUP>
    <DATA ref="#dynamic.cookies"><CATEGORIES><navigation/></CATEGORIES></DATA>
    </DATA-GROUP>
</STATEMENT>

<!-- End of policy -->
</POLICY>
</POLICIES>

Üst pencere sunucu dizinine mi yoksa iframe sunucu dizinine mi gidiyor?
JackTheKnife


0

P3P Kompakt Politikası'nı statik içerikle çalıştırmaya çalışan herkes için:

Öyle sadece statik içeriğe sahip özel sunucu tarafı yanıt başlıklarını göndermek mümkün olup olmadığını mümkün.

Daha ayrıntılı bir açıklama için cevabımı buraya bakın: HTML'de P3P kodunu ayarlayın



-1

Daha iyi bir çözüm, iframe içinde çerezleri alacak / ayarlayacak sayfaya bir Ajax çağrısı yapmak olabilir ...


1
AJAX burada yardımcı olmaz: iframe içindeki herhangi bir çerez işleme daha az güvenilirdir ("üçüncü taraf çerezleri") ve IE'de Gizlilik Politikası filtresinden geçmesi gerekir - AJAX çağrılarıyla çerezler ayarlasanız da, belge .cookie manipülasyonu veya normal sayfalar aracılığıyla (test edilmiştir).
Piskvor binadan ayrıldı

hayır, HTTP (iframe içinde) ile çerezleri ayarlayan bir ajax çağrısı yaparsanız, Ie6 güvenlik politikasını atlar ve çerezi ayarlar. Lütfen indirmeden önce çözümümün yanlış olduğundan emin olun.
Luca Matteis

Newmoon.wz.cz/test/page.php adresine bakın. AJAX aracılığıyla çerezler ayarlayabilirsiniz, ancak a) yeni oturum başlatır veya b) JS'den oturum kimliği belirlersiniz - büyük bir güvenlik deliği (XSRF). : yanlış, ben apologize.But, çözüm görünüyor eskisinden daha wronger yapım bir güvenlik deliği bana kötü görünüyor.
Piskvor binadan ayrıldı

("Güvenlik politikasını atlayan" herhangi bir şey bana en azından bir hata gibi görünür - bir politika varsa, bir sebepten dolayı oradadır. "Güvenlik politikasını / kullanıcı tercihlerini bozun, daha iyi biliyoruz" demek tehlikeli bir kaygan eğimdir. , işlevselliğin (henüz)
düzeltilmemiş

Yeni bir oturum mu ayarladınız? Neden bahsediyorsun? Çoğu tarayıcı bunu p3p başlık öğeleri olmadan destekliyor, bu yüzden Ajax aracılığıyla yapmanın farklı olduğunu anlamıyorum ...
Luca Matteis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.