SORU
29 Mart 2012, PERŞEMBE


3. parti çerez iframe hile artık çalışmıyor Safari?

Bu umteenth intikam "nasıl sağlarım 3. parti çerezleri çalışmak Safari" soru ama soruyorum tekrar çünkü bence oyun alanı değişti, belki sonra Şubat 2012. Safari parti çerezleri şu oldu 3 almak için standart numaralarından biri: gizli bir iframe için YAZILAN bazı javascript kullanın. (Kullanılan) kullanıcı 3. parti içeriği ile etkileşim olduğunu düşünerek Safari hile ve sonra çerezleri ayarlamak için izin ver.

Bendüşünüyorumbu kaçamak Google reklamları ile bu numarayı kullandığını ortaya çıktığı hafif skandalı sonrasında kapatıldı. Bu hileyi kullanırken en azından, Safari çerezleri ayarlamak için tamamen mümkün olmuştur. Apple açığı kapatmaya çalıştığını iddia eden bazı rasgele internet kayıtlarını buldum ama herhangi bir resmi açıklama bulamadım.

Gibi bir geri dönüş denedim bile yeniden tasarlama temel üçüncü parti çerçevesi çok içtiğin için TIKLAYIN bir düğme önce içeriği yük olurdu ama bu seviyede doğrudan etkileşim yeterli eritmek Safari soğuk soğuk kalp.

Bu yüzden herkes eğer Safari gerçekten de bu açığı kapattı kesin olarak biliyor mu? Eğer öyleyse, diğer çözümler (el ile, her istek bir oturum KİMLİĞİ de dahil olmak üzere) var mı?

CEVAP
22 AĞUSTOS 2012, ÇARŞAMBA


Çalışan basit bir çözüm burada bırakmak istedim sadecekullanıcı etkileşimi gerektirmez.

post I made belirttiğim gibi:

Yapmanız gereken temelde tüm üst sayfa yük.konumu, oturumu oluşturun ve facebook yönlendirin.

index.php $page_url uygulama set son sekme/app URL üstüne bu kodu ekleyin ve uygulama herhangi bir sorun olmadan çalışacak göreceksin.

<?php
    // START SAFARI SESSION FIX
    session_start();
    $page_url = "http://www.facebook.com/pages/.../...?sk=app_...";
    if (isset($_GET["start_session"]))
        die(header("Location:" . $page_url));

    if (!isset($_GET["sid"]))
        die(header("Location:?sid=" . session_id()));
    $sid = session_id();
    if (empty($sid) || $_GET["sid"] != $sid):
?>
   <script>
        top.window.location="?start_session=true";
    </script>
<?php
    endif;
    // END SAFARI SESSION FIX
?>

Bu facebook için yapıldı, ama aslında başka benzer durumlar içinde işe yarar. not:


20-Dec-2012 - İstek İmzalı Bakımı Düzenleme:

Yukarıdaki kod istekleri post veri tutmak, ve eğer başvurunuzu dayanır signed_request, imzalı isteği aşağıdaki kodu deneyin çekinmeyin: gevşek olur

Not: Bu hala doğru düzgün test ediliyor ve ilk versiyonuna göre daha az kararlı olabilir. Geribildirim takdir / kendi risk kullanın.

(Doğru yönde bana burada işaret için CBroe sayesinde çözüm geliştirmek için izin)

// Start Session Fix
session_start();
$page_url = "http://www.facebook.com/pages/.../...?sk=app_...";
if (isset($_GET["start_session"]))
    die(header("Location:" . $page_url));
$sid = session_id();
if (!isset($_GET["sid"]))
{
    if(isset($_POST["signed_request"]))
       $_SESSION["signed_request"] = $_POST["signed_request"];
    die(header("Location:?sid=" . $sid));
}
if (empty($sid) || $_GET["sid"] != $sid)
    die('<script>top.window.location="?start_session=true";</script>');
// End Session Fix

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • JorteexHD

    JorteexHD

    20 NİSAN 2012
  • Juan Carlos Candela Bordera

    Juan Carlos

    4 Mart 2009
  • Marques Brownlee

    Marques Brow

    21 Mart 2008