• 18-08-2020, 01:28:26
    #1
    arkadaşlar selamlar.

    multidomain login sistem kullanıyoruz. şöyleki account.domain.com şeklinde bir alandan login formu ile giriş yaptırıyoruz. bilgiler doğru girildiyse diğer domainlere aşağıdaki kod ile ulaşıp cookie oluşturuyoruz. sistem firefoxda çalışmaya devam ediyor ancak google chromeda çalışmamaya başladı. yakın zamana kadar çalışıyordu. son güncellemelerden kaynaklandı diye düşünüyorum.

    <img src='https://www.domain1.com/login.php?userid=".$_SESSION["uye"]."&hash=".$hash."' style='display:none;' />
    <img src='https://www.domain2.com/login.php?userid=".$_SESSION["uye"]."&hash=".$hash."' style='display:none;' />
    <img src='http://www.domain3.com/login.php?userid=".$_SESSION["uye"]."&hash=".$hash."' style='display:none;' />
    bu problemi nasıl aşabiliriz. teşekkür ederim.
  • 18-08-2020, 01:39:57
    #2
    Selamlar,

    session_set_cookie_params ile samesite değerini ayarlaman, ilgili cookie değerini secure olarak işaretlemen gerekiyor... Artık herhangi bir güncel tarayıcı bu duruma uymayanları kabul etmeyecek gibi görünüyor...
  • 18-08-2020, 22:29:41
    #3
    Berkay61 adlı üyeden alıntı: mesajı görüntüle
    Selamlar,

    session_set_cookie_params ile samesite değerini ayarlaman, ilgili cookie değerini secure olarak işaretlemen gerekiyor... Artık herhangi bir güncel tarayıcı bu duruma uymayanları kabul etmeyecek gibi görünüyor...
    hocam anladığım kadarıyla session_set_cookie_params ile cookie nin hangi domainlerde geçerli olduğunu ayarlayabiliyorum. bununla ilgili örnek bir kodunuz var mıdır. samesite derken neyi kastettiniz. yardımınız için teşekkür ederim.
  • 18-08-2020, 22:38:54
    #4
    stbolen adlı üyeden alıntı: mesajı görüntüle
    hocam anladığım kadarıyla session_set_cookie_params ile cookie nin hangi domainlerde geçerli olduğunu ayarlayabiliyorum. bununla ilgili örnek bir kodunuz var mıdır. samesite derken neyi kastettiniz. yardımınız için teşekkür ederim.
    session_set_cookie_params([
    'domain' => $_SERVER['HTTP_HOST'],
    'secure' => true, // sadece https kabul etmek için
    'httponly' => true, // JavaScript tarafından session değerine erişilmemesi için
    'samesite' => 'none' // lax | strict | none
    ]);
    https://developer.mozilla.org/en-US/...ookie/SameSite üzerinden samesite için detaylı bilgi alabilirsiniz... Özetlemek gerekirse cross-origin dolayısıyla samesite değerini none yapıp secure değerini true yapmalısınız. Ancak samesite none yaptığınız için gerektiği durumlarda CSRF konusunda ekstra önlemler almanız gerekebilir.
  • 19-08-2020, 16:35:20
    #5
    Berkay61 adlı üyeden alıntı: mesajı görüntüle
    session_set_cookie_params([
    'domain' => $_SERVER['HTTP_HOST'],
    'secure' => true, // sadece https kabul etmek için
    'httponly' => true, // JavaScript tarafından session değerine erişilmemesi için
    'samesite' => 'none' // lax | strict | none
    ]);
    https://developer.mozilla.org/en-US/...ookie/SameSite üzerinden samesite için detaylı bilgi alabilirsiniz... Özetlemek gerekirse cross-origin dolayısıyla samesite değerini none yapıp secure değerini true yapmalısınız. Ancak samesite none yaptığınız için gerektiği durumlarda CSRF konusunda ekstra önlemler almanız gerekebilir.
    hocam bu ayarlamayı bütün sitelerde session_start() ifadesinden önce yapmam gerekiyor değil mi? account.domain.com şeklinde ana login panelim var ve cookie oluşturduğum (üye girişi yaptığım) 5 tane sitem var. account.domain.com ve diğer 5 site için bu ayarlamayı yapıyorum ancak yine başarılı giriş sağlamıyor. firefox, opera da kod çalışıyor, chromeda bir türlü çalışmadı. ilginiz için tekrar teşekkürler.
  • 19-08-2020, 23:33:11
    #6
    stbolen adlı üyeden alıntı: mesajı görüntüle
    hocam bu ayarlamayı bütün sitelerde session_start() ifadesinden önce yapmam gerekiyor değil mi? account.domain.com şeklinde ana login panelim var ve cookie oluşturduğum (üye girişi yaptığım) 5 tane sitem var. account.domain.com ve diğer 5 site için bu ayarlamayı yapıyorum ancak yine başarılı giriş sağlamıyor. firefox, opera da kod çalışıyor, chromeda bir türlü çalışmadı. ilginiz için tekrar teşekkürler.
    Evet, session_start öncesinde parametreleri girmiş olmanız gerekiyor, aksi takdirde yaptığınız ayarın bir etkisi olmuyor. Yapmış olduğunuz ayarlamaların doğruluğunu Chrome tarafında geliştirici ayarlarında Uygulama sekmesinde Depolama bölümündeki çerezler kısmından detaylarıyla görüntüleyebilirsiniz. Eğer sorun devam ediyorsa üye girişi yaptığınızda session değerlerinizin account.domain.com tarafında kaydedildiğinden emin olabilir misiniz? Aynı zamanda Chrome tarafında web konsolunda çerezlerle bağlantılı herhangi bir uyarı bulunmakta mı?
  • 22-08-2020, 17:51:14
    #7
    Berkay61 adlı üyeden alıntı: mesajı görüntüle
    Evet, session_start öncesinde parametreleri girmiş olmanız gerekiyor, aksi takdirde yaptığınız ayarın bir etkisi olmuyor. Yapmış olduğunuz ayarlamaların doğruluğunu Chrome tarafında geliştirici ayarlarında Uygulama sekmesinde Depolama bölümündeki çerezler kısmından detaylarıyla görüntüleyebilirsiniz. Eğer sorun devam ediyorsa üye girişi yaptığınızda session değerlerinizin account.domain.com tarafında kaydedildiğinden emin olabilir misiniz? Aynı zamanda Chrome tarafında web konsolunda çerezlerle bağlantılı herhangi bir uyarı bulunmakta mı?
    Merhaba,

    Arkadaş soruna yanıt vermemiş ama. Bende uzun süredir bu sorunu yaşıyorum. Sizin ilettiğiniz şekilde session_start öncesine kodu yerleştirmek sureti ile aşmaya çalıştım ama sonuç ede edemedim. Acaba session_start() gibi her sayfada gözükecek şekilde mi bu kodu yazmak gerekiyor? Örneğin ben kredi kartı ödemesi geri dönüş callback alanında bu sorunu yaşıyorum. Sistem callback sırasında tüm session değerlerini unutmuş oluyor. Sadece callback sayfasının header alanında mı olmalı? Yada çalışmama sebebi ne olabilir?
  • 23-08-2020, 10:58:06
    #8
    phpdevelopertr adlı üyeden alıntı: mesajı görüntüle
    Merhaba,

    Arkadaş soruna yanıt vermemiş ama. Bende uzun süredir bu sorunu yaşıyorum. Sizin ilettiğiniz şekilde session_start öncesine kodu yerleştirmek sureti ile aşmaya çalıştım ama sonuç ede edemedim. Acaba session_start() gibi her sayfada gözükecek şekilde mi bu kodu yazmak gerekiyor? Örneğin ben kredi kartı ödemesi geri dönüş callback alanında bu sorunu yaşıyorum. Sistem callback sırasında tüm session değerlerini unutmuş oluyor. Sadece callback sayfasının header alanında mı olmalı? Yada çalışmama sebebi ne olabilir?
    Chrome tarayıcısının 80. versiyonu ile birlikte cookie konusunda bir takım değişikliklere gidilmiş durumda, yavaş yavaş diğer tarayıcılar da bu değişikliklere uyum sağlıyor. N11 tarafı bahsetmiş olduğunuz callback sırasında çerezlerin silinme durumunu çerezleri "SameSite=None;Secure" olarak işaretleyerek çözmüş.

    session_start'ın çağırıldığı her yerde öncesinde bu parametreleri eklemiş olmanız gerekiyor. Eğer tek bir yerden session_start fonksiyonunu çağırıyorsanız -ki bence en sağlıklısı bu şekilde olacaktır- zaten öncesine eklemeniz doğru ayarları yaptığınız anlamına geliyor. Tarayıcı konsolunda çerezlerinizin durumunu görüntüleyebiliyorsunuz.

    Eğer ingilizceniz var ise SameSite ile ilgili detaylı bilgileri https://web.dev/samesite-cookie-recipes/ üzerinden okuyabilirsiniz.
  • 23-08-2020, 11:04:09
    #9
    Berkay61 adlı üyeden alıntı: mesajı görüntüle
    Chrome tarayıcısının 80. versiyonu ile birlikte cookie konusunda bir takım değişikliklere gidilmiş durumda, yavaş yavaş diğer tarayıcılar da bu değişikliklere uyum sağlıyor. N11 tarafı bahsetmiş olduğunuz callback sırasında çerezlerin silinme durumunu çerezleri "SameSite=None;Secure" olarak işaretleyerek çözmüş.

    session_start'ın çağırıldığı her yerde öncesinde bu parametreleri eklemiş olmanız gerekiyor. Eğer tek bir yerden session_start fonksiyonunu çağırıyorsanız -ki bence en sağlıklısı bu şekilde olacaktır- zaten öncesine eklemeniz doğru ayarları yaptığınız anlamına geliyor. Tarayıcı konsolunda çerezlerinizin durumunu görüntüleyebiliyorsunuz.

    Eğer ingilizceniz var ise SameSite ile ilgili detaylı bilgileri https://web.dev/samesite-cookie-recipes/ üzerinden okuyabilirsiniz.
    Teşekkür ederim.

    header('Set-Cookie: same-site-cookie=foo; SameSite=Lax');
    header('Set-Cookie: cross-site-cookie=bar; SameSite=None; Secure');
    session_start();
    yukarıdaki şekilde deniyorum. sonuç alamadım. dönüşte tüm sessionları unutuyor tarayıcı.

    header('Set-Cookie: cross-site-cookie=bar; SameSite=None; Secure');
    session_start();
    bu şekilde de denedim.

    session_start();header('Set-Cookie: cross-site-cookie=bar; SameSite=None; Secure');
    bunu da denedim.

    Ayrıca sizin bu konuda paylaştığınız kodu da denedim. Hiçbir fark yok sonuç alamadım.

    Yabancı kaynaklarda gördüğüm kadarı ile benim gibi sonuç alamayan nice insan var. Belki siz tecrübe etmişsinizdir diye size sordum. Çünkü sonuç alanlar da var.

    Nerede ne yanlış yapıyoruz? Bu kodu eklemenin bir tarifi mi var başka?