Oturumlar ve Güvenlik Dış bağlantı: Oturum Tespiti HTTP oturum yönetimi, site güvenliğinin özünü temsil eder. Oturumların güvence altına alınmasını sağlamak için tüm olası etki azaltma önlemlerinin alınması zorunludur. Geliştiricilerin ayrıca uygulanabilir güvenlik önlemlerini etkinleştirmesi ve kullanması gerekir. Oturum Yönetiminin Temelleri Oturum Güvenliği Oturum modülü bir oturumda saklanan verinin sadece oturumun kullanıcısı tarafından görüldüğünü garanti edemez. Oturumun bütünlüğünü etkin olarak korumak için oturumun önemine bağlı olarak ek tedbirler alınması gerekir. Oturumlarınız tarafından taşınan verinin önemine ve konuşlandırdığınız ek korumalara bağlı olarak ki, bunun bir fiyatı vardır, kullanıcının rahatı azalır. Örneğin, kullanıcılarınızı basit sosyal mühendislik taktiklerinden korumak için session.use_only_cookies yönergesi etkin kılınmalıdır. Bu durumda, çerezler kullanıcı tarafında koşulsuz olarak etkin kılınmalıdır yoksa oturum çalışmayacaktır. Bir mevcut oturum kimliğinin üçüncü şahıslara ifşa olmasının çeşitli yolları vardır. Örneğin, JavaScript zerkleri, URL'lerdeki oturum kimlikleri, paket koklama, cihaza fiziksel erişim vb. İfşa edilmiş bir oturum kimliği, üçüncü tarafın o kimlik ile ilişkilendirilmiş tüm özkaynaklara erişmesini mümkün kılar. İlk olarak oturum kimliğini taşıyan URL'ler ifşa olur. Harici bir siteye bir bağ verilirse oturum kimliğini içeren URL, harici sitenin günlük kayıtlarına geçebilir. İkinci olarak, daha etkin bir saldırgan ağ trafiğini dinleyebilir. Eğer şifreleme yapılmıyorsa oturum kimlikleri ağ üzerinden salt metin olarak akacaktır. Bu noktada çözüm, sunucunuzun SSL bağlantılar kurmasını sağlamak ve bunu kullanıcılarınız için zorunlu kılmaktır. Güvenliği arttırmak için HSTS kullanılmalıdır. HTTPS bile gizli verileri her zaman koruyamaz. Örneğin, CRIME ve Beast güvenlik açıkları, bir saldırganın verileri okumasını sağlayabilir. Ayrıca, birçok ağın denetim amacıyla HTTPS MITM vekilleri kullandığı unutulmamalıdır. Saldırganlar da böyle bir vekil sunucu kurabilir. Uyumsuz Oturum Yönetimi PHP'nin oturum yöneticisi şu anda öntanımlı olarak uyarlanabilir durumdadır. Uyarlanabilir bir oturum yöneticisi ek riskler içerir. session.use_strict_mode etkin olduğunda ve oturum kayıt işleyicisi destekliyorsa, ilklendirilmemiş bir oturum kimliği reddedilir ve yenisi oluşturulur. Bu, kullanıcıyı bilinen bir oturum kimliğini kullanmaya zorlayan bir saldırıyı engeller. Bir saldırgan bağlantıları kopyalayabilir ve oturum kimliği içeren bağlantıları epostalarda yollayabilir. Örneğin, http://example.com/page.php?PHPSESSID=123456789 eğer session.use_trans_sid etkinse, kurban, saldırgan tarafından sağlanan oturum kimliğini kullanarak bir oturum başlatacaktır. session.use_strict_mode bu riski azaltır. Kullanıcı tanımlı kayıt işleyicileri, oturum kimliği doğrulaması uygulayarak katı oturum kipini destekleyebilir. Tüm kullanıcı tanımlı kayıt işleyicileri, oturum kimliği doğrulamasını gerçeklemelidir. Oturum kimliği çerezine domain, path, httponly, secure ve PHP 7.3 ve sonrasında SameSite öznitelikleri atanabilir. Tarayıcılarda tanımlı öncelikler vardır. Öncelik kullanarak bir saldırganın kalıcı olarak kullanılabilecek oturum kimliği ataması mümkündür. session.use_only_cookies kullanımı bu sorunu çözümlemez. session.use_strict_mode bu riski azaltır. session.use_strict_mode=On ile ilklendirilmemiş bir oturum kimliği reddedilir. session.use_strict_mode uyarlanabilir oturum yönetimi riskini azaltsa da, bir saldırgan yine de kullanıcıyı ilklendirilmemiş bir oturum kimliğini kullanmaya zorlayabilir; böyle bir oturum kimliği saldırgan tarafından JavaScript zerki ile oluşturulabilir. Bu saldırının riskleri bu kılavuzun tavsiyelerine uyularak azaltılabilir. Bu kılavuzu izleyerek, geliştiriciler, session.use_strict_mode yönergesini etkin kılmalı, zaman damgalı oturum yönetimi kullanmalı ve tavsiye edilen yordamlarla session_regenerate_id kullanarak oturum kimliklerini yeniden üretmelidir. Geliştirici yukarıdakilerin tümünü uyguladığı takdirde saldırgan üretimi oturum kimliği silinecektir. Eski oturuma erişim gerçekleştiğinde, bu bilgiler, müteakip bir soruşturma için geçerli olacağından, geliştiriciler kullanıcının tüm etkin oturum verilerini kaydetmelidir. Kullanıcının tüm oturumları zorla kapatılmalı ve yeniden kimlik doğrulaması yapması istenmelidir. Bu, saldırganların çalınan oturumları kötü amaçlarla kullanmasını engeller. Eski oturuma erişim, mutlaka bir saldırı anlamına gelmez. Kararsız bir ağ ve/veya etkin oturumun derhal silinmesi, meşru kullanıcıların eski oturumlarını kullanmasına sebep olacaktır. PHP 7.1.0 ve sonrası için, session_create_id eklendi. Bu işlev, bir kullanıcının oturum kimliklerinin önüne kullanıcı kimliği eklenerek tüm etkin oturumlarına verimli bir şekilde erişmek için çalıştırılabilir. session.use_strict_mode'u etkinleştirmek bu gerçeklenim için çok önemlidir. Aksi takdirde, kötü niyetli kullanıcılar diğer kullanıcılar için kötü amaçlı bir oturum kimliği atayabilir. PHP 7.1.0 öncesinde gelitiriciler yeni bir oturum kimliği üretmek için /dev/urandom gibi CSPRNG veya aş işlevlerini ve random_bytes işlevini kullanmalıdır. session_create_id çakışma algılama özelliğine sahiptir ve oturumun INI ayarlarına göre bir oturum kimliği üretir. Oturum Kimliğinin Yeniden Üretilmesi session.use_strict_mode iyi bir acı azaltıcıdır ancak yetersizdir. Geliştiriciler oturum güvenliğini sağlamak için aynı zamanda session_regenerate_id işlevini de kullanmalıdır. Oturum kimliğinin yenilenmesi oturum kimliklerinin çalınma riskini azaltır, bu bakımdan session_regenerate_id belirli aralıklarla sürekli çağrılmalıdır. Örneğin, güvenlik açısından hassas içerik için oturum kimliği her 15 dakikada bir yeniden oluşturulmalıdır. Bir oturum kimliğinin çalınması durumunda bile, hem meşru kullanıcının hem de saldırganın oturumu sona erecektir. Başka bir deyişle, kullanıcı veya saldırgan tarafından erişim, eski bir oturuma erişim hatası üretecektir. Oturum kimlikleri, kullanıcı ayrıcalıkları yükseltildiğinde, kimlik doğrulamasından sonra yapıldığı gibi yeniden oluşturulmalıdır. Kimlik doğrulama bilgisi $_SESSION dizisine atamadan önce session_regenerate_id çağrılmalıdır. (PHP 7.0.0'dan itibaren, session_regenerate_id, zaman damgasını/ve benzerlerini geçerli oturuma kaydetmek için mevcut oturum verilerini otomatik olarak kaydeder.) Yalnızca yeni oturumun doğrulanmış bayrağı içerdiğinden emin olunmalıdır. Geliştiriciler, session.gc_maxlifetime değerine göre oturum kimliğinin süresinin dolmasına güvenmemelidir. Saldırganlar, süresinin dolmasını önlemek ve kimliği doğrulanmış bir oturum da dahil olmak üzere oturumu kullanmaya devam edebilmek için bir kurbanın oturum kimliğine düzenli aralıklarla erişebilir. Bunun yerine, geliştiricilerin zaman damgasına dayalı oturum verisi yönetimini gerçeklemesi gerekir. Oturum yöneticisi zaman damgalarını şeffaf bir şekilde yönetebilse de bu özellik uygulanmaz. Eski oturum verileri çöp toplayıcıya gidene kadar saklanmalıdır. Aynı zamanda, geliştiriciler, eski oturum verilerinin silindiğinden emin olmalıdır. Ancak geliştiriciler, etkin oturum verilerini hemen silmemelidir. Yani session_regenerate_id(true); ve session_destroy etkin bir oturum için asla birlikte çağrılmamalıdır. Bu çelişkili gelebilir, ancak bu zorunlu bir gerekliliktir. session_regenerate_id öntanımlı olarak eski oturumları silmez. Eski kimliği doğrulanmış oturumlar kullanım için mevcut olabilir. Geliştiriciler, eski oturumların herkes tarafından tüketilmesini engellemeli, zaman damgalarını kullanarak eski oturum verilerine kendi başlarına erişimi yasaklamalıdır. Etkin bir oturumun aniden kaldırılması istenmeyen yan etkilere neden olur. Sunucuya eşzamanlı bağlantılar olduğunda ve/veya ağ kararsız olduğunda oturumlar kaybedilebilir. Etkin oturumların aniden kaldırılmasıyla olası bir kötü amaçlı erişim tespit edilemez. Geliştiriciler, güncel olmayan oturumları hemen silmek yerine, $_SESSION'da kısa süreli bir zaman aşımı (bir zaman damgası) belirlemeli ve kulanıcıların oturum verilerine kendi başlarına erişmesi engellenmelidir. Geliştiriciler, session_regenerate_id işleminin hemen ardından eski oturum verilerine erişimi yasaklamamalı, daha sonraki bir aşamada yasaklamalıdır. Örneğin. kablolu ağ gibi kararlı ağlar için birkaç saniye sonra ve cep telefonları veya Wi-Fi gibi kararsız ağlar için birkaç dakika sonra. Bir kullanıcı eski bir oturuma (süresi dolmuş oturum) erişirse, buna erişim reddedilmelidir. Ayrıca, bir saldırıyı temsil etmesi muhtemel olduğundan, kimlik doğrulamalı durumunun kullanıcının tüm oturumlarından kaldırılması önerilir. session.use_only_cookies ve session_regenerate_id öğelerinin doğru kullanımı, saldırganlar tarafından ayarlanan silinemeyen çerezlerle kişisel DoS'a neden olabilir. Bu durumda geliştiriciler, kullanıcıları çerezleri kaldırmaya davet edebilir ve bir güvenlik sorunundan etkilenebileceklerini bildirebilir. Saldırganlar, güvenlik açığı bulunan bir web uygulaması, açıkta kalan/kötü niyetli bir tarayıcı eklentisi, fiziksel olarak güvenliği ihlal edilmiş bir cihaz vb. aracılığıyla kötü amaçlı çerezler atayabilir. DoS riski yanlış anlaşılmasın. session.use_strict_mode=On genel oturum kimliği güvenliği için zorunludur! Tüm sitelerin session.use_strict_mode'u etkinleştirmesi önerilir. DoS, yalnızca hesap saldırı altındayken gerçekleşebilir. Bir uygulamadaki JavaScript zerki güvenlik açığı en yaygın sebeplerdendir. Oturum Verisinin Silinmesi Eski oturum verisi erişilemez ve silinmiş olmalıdır. Geçerli oturum modülü bunu gerektiği gibi yerine getiremez. Eski oturum verileri mümkün olan en kısa sürede silinmelidir. Ancak, etkin oturumlar hemen kaldırılmamalıdır. Bu gereksinimleri karşılamak için geliştiriciler, zaman damgasına dayalı oturum veri yönetimini kendi başlarına uygulamalıdır. $_SESSION içinde zaman aşımı damgası ayarlanmalı ve yönetilmelidir. Güncel olmayan oturum verilerine erişim yasaklanmalıdır. Eski oturum verilerine erişim tespit edildiğinde, kullanıcının oturumlarından tüm kimliği doğrulanmış durumları kaldırıp yeniden kimlik doğrulamaya zorlanması önerilir. Eski oturum verilerine erişim bir saldırıyı temsil edebilir. Bunu başarmak için geliştiriciler, her kullanıcının tüm etkin oturumlarını takip etmelidir. Eski bir oturuma erişim, kararsız bir ağ ve/veya siteye eşzamanlı erişim nedeniyle de gerçekleşebilir. Örneğin, sunucu bir çerez aracılığıyla yeni bir oturum kimliği belirlemeye çalışmış, ancak bağlantının kesilmesi nedeniyle Set-Cookie paketi istemciye ulaşmamış olabilir. Bir bağlantıya session_regenerate_id tarafından yeni bir oturum kimliği verilebilir, ancak başka bir eşzamanlı bağlantı henüz yeni oturum kimliğini almamış olabilir. Bu nedenle, geliştiriciler daha sonraki bir aşamada eski oturuma erişimi yasaklamalıdır. Yani zaman damgası tabanlı oturum yönetimi zorunludur. Özetle, oturum verileri ne session_regenerate_id ne de session_destroy ile yok edilmeli, oturum verilerine erişimi denetlemek için zaman damgaları kullanılmalıdır. session_gc'nin oturum veri deposundaki eski verileri silmesine izin verilmelidir. Oturum Kilitleme Yarış koşullarından kaçınmak için oturum verileri öntanımlı olarak kilitlenir. Oturum verilerinin istekler arasındaki tutarlılığını sağlamak için kilitleme zorunludur. Ancak oturum kilitleme, saldırganlar tarafından DoS saldırıları gerçekleştirmek için kötüye kullanılabilir. Oturum kilitleyerek DoS saldırısı riskini azaltmak için kilitler en aza indirilmelidir. Oturum verilerinin güncellenmesi gerekmediğinde salt okunur oturumlar kullanılmalıdır. session_start işlevi 'read_and_close' seçeneği ile kullanılmalıdır: session_start(['read_and_close'=>1]); session_commit kullanarak $_SESSION güncellendikten hemen sonra, mümkün olan en kısa sürede oturum kapatılmalıdır. Geçerli oturum modülü, oturum etkin olmadığında $_SESSION üzerinde herhangi bir değişiklik algılamaz. Oturum etkin değilken $_SESSION üzerinde değişiklik yapmamak geliştiricinin sorumluluğundadır. Etkin Oturumlar Geliştiriciler, her kullanıcı için tüm etkin oturumları izlemelidir. Ve kullanıcılara kaç tane etkin oturum, hangi IP'den (ve alandan), ne kadar süredir etkin oldukları vs. bildirilmelidir. PHP bunları takip etmez. Bunu geliştiricilerin yapacağı varsayılır. Bunu uygulamak için çeşitli yollar mevcuttur. Olası bir uygulama, gerekli verileri takip eden ve ilgili tüm bilgileri depolayan bir veritabanı oluşturmaktır. Geçersiz oturum verileri çöp toplayıcıya gittiğinden, geliştiricilerin etkin oturum veritabanı tutarlılığını korumak için çöp toplayıcı verileriyle de ilgilenmesi gerekir. En basit uygulamalardan biri "oturum kimliği ile öncelenmiş kullanıcı kimliği"dir ve gerekli bilgiler $_SESSION içinde saklanır. Birçok veritabanı, bu öneki seçebilmektedir. Geliştiriciler bunun için session_regenerate_id ve session_create_id kullanabilir. Gizli verileri asla önek olarak kullanmayın. Kullanıcı kimliği gizliyse hash_hmac önerilir. Bu uygulama için session.use_strict_mode yönergesinin etkinleştirilmesi zorunludur. Etkin olduğundan emin olun. Aksi takdirde aktif oturum veritabanı tehlikeye girebilir. Eski oturumlara erişimi tespit etmek için zaman damgasına dayalı oturum yönetimi zorunludur. Eski bir oturuma erişim tespit edildiğinde, kullanıcının tüm etkin oturumlarından kimlik doğrulama bayrakları silinmelidir. Bu, saldırganların çalınan oturumlardan yararlanmaya devam etmesini önler. Oturum ve Otomatik Oturum Açmak Oturumun çalınma riskini artırdığından, geliştiriciler otomatik oturum açma için uzun ömürlü oturum kimlikleri kullanmamalıdır. Otomatik giriş özelliğini geliştirici gerçeklemelidir. setcookie kullanarak otomatik oturum açma anahtarı olarak tek seferlik güvenli bir aşlama anahtarı kullanın. SHA-2'den daha güçlü bir aşlama algoritması kullanın. Örneğin, /dev/urandom veya random_bytes'dan rastgele verilerle SHA-256 veya üstü. Kullanıcının kimliği doğrulanmamışsa, tek seferlik otomatik giriş anahtarının geçerli olup olmadığına bakılmalıdır. Geçerli olması durumunda, kullanıcının kimliği doğrulanmalı ve yeni bir güvenli tek seferlik aşlama anahtarı atanmalıdır. Otomatik oturum açma anahtarı yalnızca bir kez kullanılmalıdır, yani bir otomatik oturum açma anahtarının asla yeniden kullanılmaması gerekir. Her zaman yeni bir tane oluşturulmalıdır. Otomatik oturum açma anahtarı, uzun ömürlü bir kimlik doğrulama anahtarıdır, mümkün olduğunca korunması gerekir. Güvenli hale getirmek için path/httponly/secure/SameSite çerezinin öznitelikleri kullanılmalıdır. Yani otomatik giriş anahtarı, gerekmedikçe asla aktarılmamalıdır. Geliştirici, otomatik oturum açmayı devre dışı bırakan ve gereksiz otomatik oturum açma anahtarı tanımlama bilgisini kaldıran özellikleri uygulamalıdır. CSRF (Siteler Arası Talep Sahtekarlıkları) Saldırıları Oturumlar ve kimlik doğrulama, CSRF saldırılarına karşı koruma sağlamaz. Geliştiriciler, CSRF korumasını kendileri gerçeklemelidir. CSRF koruması için output_add_rewrite_var kullanılabilir. Daha fazla bilgi işlevin sayfasında bulunabilir. PHP 7.2.0 öncesinde, şeffaf oturum kimliği ile aynı çıktı tamponu ve INI ayarı kullanılırdı. Bu nedenle, 7.2.0 öncesi PHP sürümleri ile output_add_rewrite_var kullanılması önerilmez. Çoğu sayfa uygulama çerçevesi CSRF korumasını destekler. Daha fazla ayrıntı için sayfa uygulama çerçevesi kılavuzunuza bakılabilir. PHP 7.3'ten itibaren, oturum çerezi için SameSite özniteliği ayarlanabiliyor. Bu, CSRF güvenlik açıklarını azaltabilecek ek bir önlemdir. Oturum INI Ayarlarının Güvenliği Geliştiriciler, oturumla ilgili INI ayarlarını güvenli duruma getirerek oturum güvenliğini iyileştirebilir. Bazı önemli INI ayarlarında bir değer önerilmez. Oturum ayarlarının güçlendirilmesinden geliştiriciler sorumludur. session.cookie_lifetime=0 0 belirli bir anlama sahiptir. Tarayıcıları, çerezi kalıcı depoya kaydetmemeleri konusunda bilgilendirir. Bu nedenle, tarayıcı sonlandırıldığında, oturum kimliği çerezi hemen silinir. Geliştiriciler yönergeye sıfırdan farklı bir değer atarsa, diğer kullanıcıların oturum kimliğini kullanmasına izin verebilir. Çoğu gerçeklenimde bunun için "0" kullanılmalıdır. Otomatik oturum açma özelliği gerekiyorsa, geliştiricilerin kendi güvenli otomatik oturum açma özelliklerini gerçeklemeleri gerekir. Bunun için uzun ömürlü oturum kimlikleri kullanmayın. Daha fazla bilgiyi yukarıdaki ilgili bölümde bulabilirsiniz. session.use_cookies=On session.use_only_cookies=On HTTP çerezleri bazı sorunlara yol açsa da çerezler oturum kimliklerini yönetmek için tercih edilmeye devam etmektedir. Çerezleri yalnızca mümkün olduğunda oturum kimliği yönetimi için kullanılmalıdır. Çoğu uygulama, oturum kimliği için çerez kullanmaktadır. session.use_only_cookies=Off ise, oturum modülü, oturum kimliği çerezinin ilklendirilmemiş olması koşuluyla, GET/POST/URL tarafından atanan oturum kimliği değerlerini kullanır. session.use_strict_mode=On Bununla birlikte, güvenli oturumlar için session.use_strict_mode'un etkinleştirilmesi zorunludur. Önatnımlı olarak devre dışıdır. Bu, oturum modülünün ilklendirilmemiş oturum kimliği kullanmasını engeller. Başka bir deyişle, oturum modülü yalnızca oturum modülü tarafından üretilen geçerli oturum kimliklerini kabul eder. Kullanıcılar tarafından sağlanan herhangi bir oturum kimliğini reddeder. Çerez belirtiminden dolayı, saldırganlar JavaScript zerkleriyle veya yerel olarak bir çerez veritabanı atayarak kaldırılamayan oturum kimliği çerezleri yerleştirebilir. session.use_strict_mode, bir saldırganın ilklendirdiği oturum kimliğinin kullanılmasını engelleyebilir. Saldırganlar, oturum kimliğini kendi cihazlarında ilklendirip kurbanın oturum kimliğini atayabilir. Kötüye kullanım için oturum kimliğini etkin tutmaları gerekir. Bu senaryoda bir saldırı gerçekleştirmek için saldırganlara ek adımlar gerekir. Bu nedenle, session.use_strict_mode bir risk azaltıcı olarak çalışır. session.cookie_httponly=On Oturum çerezine JavaScript'ten erişimi reddeder. Bu yönerge, bir JavaScript zerkiyle çerezlerin kaçırılmasını önler. Bir oturum kimliğini CSRF dizgeciği olarak kullanmak mümkündür, ancak bu önerilmez. Örneğin, HTML kaynakları kaydedilebilir ve diğer kullanıcılara gönderilebilir. Geliştiriciler, daha iyi güvenlik için oturum kimliklerini sayfaya yazmamalıdır. Hemen hemen tüm uygulamalarda, oturum kimliği çerezi için httponly özniteliğini kullanılmalıdır. CSRF dizgeciği oturum kimliği gibi düzenli aralıklarla olarak yenilenmelidir. session.cookie_secure=On Yalnızca protokol HTTPS olduğunda oturum kimliği çerezine erişime izin verin. Bir sitenin yalnızca HTTPS üzerinden erişilebiliyorsa, bu ayarı etkinleştirmesi gerekir. HSTS, yalnızca HTTPS aracılığıyla erişilebilen siteler için düşünülmelidir. session.cookie_samesite="Lax" veya session.cookie_samesite="Strict" PHP 7.3'ten itibaren, oturum kimliği çerezi için "SameSite" özniteliği atanabilir. Bu özniteliğin kullanımı, CSRF (Siteler Arası İstek Sahteciliği) saldırılarını azaltmanın bir yoludur. Lax ve Strict arasındaki fark, HTTP GET yöntemini kullanan başka bir kaydedilebilir etki alanından kaynaklanan isteklerde çerezin erişilebilirliğidir. Lax kullanan çerezlere başka bir kaydedilebilir alandan gelen bir GET isteğinde erişilebilirken, Strict kullanan çerezlerde erişilemez. session.gc_maxlifetime=[en küçük olasılığı seç] session.gc_maxlifetime, eski oturum kimliğini silmek içindir. Bu ayara güvenilmemeli, geliştiriciler, oturumların ömrünü bir zaman damgasıyla kendileri yönetmelidir. Oturum çöp toplayıcısı en iyi şekilde session_gc kullanılarak gerçekleştirilir. session_gc işlevi, bir görev yöneticisi tarafından çağrılmalıdır. Örneğin, UNIX benzeri sistemlerde cron kullanılabilir. Çöp toplayıcı, öntanımlı olarak olasılıklara bağlı çalışır. Bu ayar, eski bir oturumun silineceğini garanti etmez. Geliştiriciler bu ayara güvenemese de, mümkün olan en küçük değerde belirtilmesi önerilir. session.gc_probability ve session.gc_divisor yönergelerinin, eski oturumlar uygun bir sıklıkta silinecek şekilde ayarlanması önerilir. Otomatik oturum açma özelliği gerekliyse geliştiricilerin kendi güvenli otomatik oturum açma özelliklerini gerçeklemeleri gerekir, daha fazla bilgi için yukarıya bakın. Bu özellik için asla uzun ömürlü oturum kimliği kullanılmamalıdır. Bazı oturum kayıt işleyici modülleri, olasılığa dayalı süre sonu için bu ayarı kullanmaz. Örneğin, memcache'li memcache. Ayrıntılar için oturum kayıt işleyici belgelerine bakın. session.use_trans_sid=Off Şeffaf oturum kimliği yönetiminin kullanılması yasaklanmıştır. Geliştiriciler gerektiğinde kullanabilir. Ancak, şeffaf oturum kimliği yönetimini devre dışı bırakmak, oturum kimliği ekleme ve/veya sızıntı olasılığını ortadan kaldırarak genel oturum kimliği güvenliğini iyileştirir. Oturum kimliği, yer imlerine kaydedilen ve e-postayla gönderilen URL'lerden, kaydedilmiş HTML kaynağından vb. sızabilir. session.trans_sid_tags=[sınırlı etiketler] (PHP 7.1.0 ve üstü) Geliştiriciler, gereksiz HTML etiketlerini yeniden yazmamalıdır. öntanımlı değer çoğu kullanım için yeterli olmalıdır. Daha eski PHP sürümleri bunun yerine url_rewriter.tags kullanabilir. session.trans_sid_hosts=[sınırlı konaklar] (PHP 7.1.0 ve üstü) Bu INI, effaf oturum kimliğini yeniden yazmaya izin veren beyaz listeli konakları tanımlar. Güvenilmeyen konaklar asla eklenmemelidir. Oturum modülü yalnızca bu ayar boş olduğunda $_SERVER['HTTP_HOST'] öğesine izin verir. session.referer_check=[kaynaklanan URL] session.use_trans_sid etkinleştirildiğinde. Oturum kimliği zerk riskini azaltır. Site örneğin http://example.com/ ise, yönergeye de http://example.com/ atanmalıdır. HTTPS ile tarayıcıların referrer başlığını göndermeyeceği unutulmamalıdır. Tarayıcılar, referrer başlığını yapılandırmaya göre gönderemez. Bu nedenle, bu ayar güvenilir bir güvenlik önlemi değildir. Bu ayarın kullanılması önerilir. session.cache_limiter=nocache Kimliği doğrulanmış oturumlar için HTTP içeriğinin önbelleğe alınmadığından emin olunmalıdır. Yalnızca içerik gizli olmadığında önbelleğe alınmasına izin verilmelidir. Aksi takdirde, içerik açığa çıkabilir. HTTP içeriği güvenlik açısından hassas veriler içermiyorsa "private" kullanılabilir. "private" ataması nedeniyle, paylaşılan istemciler tarafından önbelleğe alınan özel verilerin aktarılabileceği unutulmamalıdır. "public" yalnızca HTTP içeriği hiçbir özel veri içermediğinde kullanılmalıdır. session.sid_length="48" (PHP 7.1.0 ve üstü) Oturum kimlikleri uzadıkça, daha güçlü oturum kimlikleri haline gelir. Geliştiriciler, 32 karakter ve üstü oturum kimliği uzunluklarını dikkate almalıdır. session.sid_bits_per_character="5" olduğunda en az 26 karakter gerekir. session.sid_bits_per_character="6" (PHP 7.1.0 ve üstü) Bir oturum kimliği karakterinde ne kadar çok bit varsa, oturum modülü tarafından oluşturulan oturum kimliği, aynı uzunluktaki sıradan bir oturum kimliğinden daha güçlü olur. session.hash_function="sha256" (PHP 7.1.0 ve üstü) Daha güçlü bir aşlama işlevi, daha güçlü bir oturum kimliği üretecektir. MD5 aşlama algoritmasında bile aş çakışması olasılığı olmasa da, geliştiriciler SHA-2 veya sha384 ve hatta sha512 gibi daha güçlü bir aşlama algoritması kullanmalıdır. Geliştiriciler, kullanılan aşlama işlevini yeterince uzun bir karmaşa ile beslediklerinden emin olmalıdır. session.save_path=[herkesçe-okunamayan-dizin] Bu, /tmp (öntanımlıdır) gibi herkesçe okunabilir bir dizine ayarlanırsa, sunucudaki diğer kullanıcılar bu dizindeki dosyaların listesini alarak oturumları ele geçirebilir.