Warning: Calling `ini_set('session.use_only_cookies', 1)` returns FALSE if `session_start()` has already been called.
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.
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.
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.
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.
Bilginize:
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.
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.
Bilginize:
CSRF dizgeciği oturum kimliği gibi düzenli aralıklarla olarak yenilenmelidir.
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.
Bilginize:
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.
Ş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.
Bilginize:
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.
Warning: Calling `ini_set('session.use_only_cookies', 1)` returns FALSE if `session_start()` has already been called.