<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/session.security.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'features.session.security.management.php',
    1 => 'Oturum Y&ouml;netiminin Temelleri',
    2 => 'Oturum Y&ouml;netiminin Temelleri',
  ),
  'up' => 
  array (
    0 => 'session.security.php',
    1 => 'Oturumlar ve G&uuml;venlik',
  ),
  'prev' => 
  array (
    0 => 'session.security.php',
    1 => 'Oturumlar ve G&uuml;venlik',
  ),
  'next' => 
  array (
    0 => 'session.security.ini.php',
    1 => 'Oturum INI Ayarlarının G&uuml;venliği',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'reference/session/security.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="features.session.security.management" class="sect1">
   <h2 class="title">Oturum Yönetiminin Temelleri</h2>

   <div class="sect2" id="features.session.security.management.basic">
    <h3 class="title">Oturum Güvenliği</h3>
    <p class="para">
     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.
    </p>
    <p class="para">
     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
     <a href="session.configuration.php#ini.session.use-only-cookies" class="link">session.use_only_cookies</a>
     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.
    </p>
    <p class="para">
     Bir mevcut oturum kimliğinin üçüncü şahıslara ifşa olmasının çeşitli
     yolları vardır. Örneğin, JavaScript zerkleri, URL&#039;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&#039;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.
    </p>
   <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
    <span class="simpara">
     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.
    </span>
   </p></blockquote>
  </div>

  <div class="sect2" id="features.session.security.management.non-adaptive-session">
   <h3 class="title">Uyumsuz Oturum Yönetimi </h3>
   <p class="para">
    PHP&#039;nin oturum yöneticisi şu anda öntanımlı olarak uyarlanabilir
    durumdadır. Uyarlanabilir bir oturum yöneticisi ek riskler içerir.
   </p>
   <p class="para">
    <a href="session.configuration.php#ini.session.use-strict-mode" class="link">session.use_strict_mode</a>
    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,
   <code class="literal">http://example.com/page.php?PHPSESSID=123456789</code> eğer
    <a href="session.configuration.php#ini.session.use-trans-sid" class="link">session.use_trans_sid</a>
    etkinse, kurban, saldırgan tarafından sağlanan oturum kimliğini kullanarak
    bir oturum başlatacaktır.
    <a href="session.configuration.php#ini.session.use-strict-mode" class="link">session.use_strict_mode</a>
    bu riski azaltır.
   </p>
   <div class="warning"><strong class="warning">Uyarı</strong>
    <p class="simpara">
     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.
    </p>
   </div>
   <p class="para">
    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. <a href="session.configuration.php#ini.session.use-only-cookies" class="link">session.use_only_cookies</a>
    kullanımı bu sorunu çözümlemez.
    <a href="session.configuration.php#ini.session.use-strict-mode" class="link">session.use_strict_mode</a>
    bu riski azaltır. <a href="session.configuration.php#ini.session.use-strict-mode" class="link">session.use_strict_mode</a>=On
    ile ilklendirilmemiş bir oturum kimliği reddedilir.
   </p>
   <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
    <span class="simpara"><a href="session.configuration.php#ini.session.use-strict-mode" class="link">session.use_strict_mode</a>
     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.
    </span>
    <span class="simpara">
     Bu kılavuzu izleyerek, geliştiriciler, <a href="session.configuration.php#ini.session.use-strict-mode" class="link">session.use_strict_mode</a>
     yönergesini etkin kılmalı, zaman damgalı oturum yönetimi kullanmalı ve
     tavsiye edilen yordamlarla <span class="function"><a href="function.session-regenerate-id.php" class="function">session_regenerate_id()</a></span>
     kullanarak oturum kimliklerini yeniden üretmelidir. Geliştirici
     yukarıdakilerin tümünü uyguladığı takdirde saldırgan üretimi oturum
     kimliği silinecektir.
    </span>
    <span class="simpara">
     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.
    </span>
   </p></blockquote>
   <div class="warning"><strong class="warning">Uyarı</strong>
    <p class="simpara">
     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.
    </p>
   </div>
   <p class="para">
    PHP 7.1.0 ve sonrası için, <span class="function"><a href="function.session-create-id.php" class="function">session_create_id()</a></span> 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. <a href="session.configuration.php#ini.session.use-strict-mode" class="link">session.use_strict_mode</a>&#039;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.
   </p>
   <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
    <span class="simpara">
     PHP 7.1.0 öncesinde gelitiriciler yeni bir oturum kimliği üretmek için
     <var class="filename">/dev/urandom</var> gibi <abbr title="Cryptographically Secure PseudoRandom Number Generator">CSPRNG</abbr> veya aş
     işlevlerini ve <span class="function"><a href="function.random-bytes.php" class="function">random_bytes()</a></span> işlevini kullanmalıdır.
     <span class="function"><a href="function.session-create-id.php" class="function">session_create_id()</a></span> çakışma algılama özelliğine
     sahiptir ve oturumun INI ayarlarına göre bir oturum kimliği üretir.
    </span>
   </p></blockquote>
  </div>

  <div class="sect2" id="features.session.security.management.session-id-regeneration">
   <h3 class="title">Oturum Kimliğinin Yeniden Üretilmesi</h3>
   <p class="para">
    <a href="session.configuration.php#ini.session.use-strict-mode" class="link">session.use_strict_mode</a>
    iyi bir acı azaltıcıdır ancak yetersizdir. Geliştiriciler oturum
    güvenliğini sağlamak için aynı zamanda
    <span class="function"><a href="function.session-regenerate-id.php" class="function">session_regenerate_id()</a></span> işlevini de kullanmalıdır.
   </p>
   <p class="para">
    Oturum kimliğinin yenilenmesi oturum kimliklerinin çalınma riskini
    azaltır, bu bakımdan <span class="function"><a href="function.session-regenerate-id.php" class="function">session_regenerate_id()</a></span> 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.
   </p>

   <p class="para">
    Oturum kimlikleri, kullanıcı ayrıcalıkları yükseltildiğinde, kimlik
    doğrulamasından sonra yapıldığı gibi <em>yeniden
    oluşturulmalıdır</em>. Kimlik doğrulama bilgisi
   <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> dizisine atamadan önce
   <span class="function"><a href="function.session-regenerate-id.php" class="function">session_regenerate_id()</a></span> çağrılmalıdır.
    (PHP 7.0.0&#039;dan itibaren, <span class="function"><a href="function.session-regenerate-id.php" class="function">session_regenerate_id()</a></span>, 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.
   </p>

   <p class="para">
    Geliştiriciler,
    <a href="session.configuration.php#ini.session.gc-maxlifetime" class="link">session.gc_maxlifetime</a>
    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.
   </p>

   <p class="para">
    Bunun yerine, geliştiricilerin zaman damgasına dayalı oturum verisi
    yönetimini gerçeklemesi gerekir.
   </p>

   <div class="warning"><strong class="warning">Uyarı</strong>
    <p class="simpara">
     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 <code class="code">session_regenerate_id(true);</code> ve
     <span class="function"><a href="function.session-destroy.php" class="function">session_destroy()</a></span> etkin bir oturum için asla birlikte
     çağrılmamalıdır. Bu çelişkili gelebilir, ancak bu zorunlu bir
     gerekliliktir.
    </p>
   </div>

   <p class="para">
    <span class="function"><a href="function.session-regenerate-id.php" class="function">session_regenerate_id()</a></span> öntanımlı olarak eski
    oturumları <em>silmez</em>. 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.
   </p>

   <div class="warning"><strong class="warning">Uyarı</strong>
    <p class="simpara">
     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.
    </p>
    <p class="simpara">
     Etkin oturumların aniden kaldırılmasıyla olası bir kötü amaçlı erişim
     tespit edilemez.
    </p>
    <p class="simpara">
     Geliştiriciler, güncel olmayan oturumları hemen silmek yerine,
     <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var>&#039;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.
    </p>
    <p class="simpara">
     Geliştiriciler, <span class="function"><a href="function.session-regenerate-id.php" class="function">session_regenerate_id()</a></span> 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.
    </p>
    <p class="simpara">
     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.
    </p>
   </div>

   <p class="para"><a href="session.configuration.php#ini.session.use-only-cookies" class="link">session.use_only_cookies</a> ve
    <span class="function"><a href="function.session-regenerate-id.php" class="function">session_regenerate_id()</a></span> öğelerinin doğru kullanımı,
    saldırganlar tarafından ayarlanan silinemeyen çerezlerle kişisel DoS&#039;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.
   </p>

   <div class="warning"><strong class="warning">Uyarı</strong>
    <p class="simpara">
     DoS riski yanlış anlaşılmasın.
     <a href="session.configuration.php#ini.session.use-strict-mode" class="link">session.use_strict_mode</a>=On
     genel oturum kimliği güvenliği için zorunludur! Tüm sitelerin
     <a href="session.configuration.php#ini.session.use-strict-mode" class="link">session.use_strict_mode</a>&#039;u
     etkinleştirmesi önerilir.
    </p>
    <p class="simpara">
     DoS, yalnızca hesap saldırı altındayken gerçekleşebilir.
     Bir uygulamadaki JavaScript zerki güvenlik açığı en yaygın sebeplerdendir.
    </p>
   </div>

  </div>

  <div class="sect2" id="features.session.security.management.session-data-deletion">
   <h3 class="title">Oturum Verisinin Silinmesi</h3>

   <p class="para">
    Eski oturum verisi erişilemez ve silinmiş olmalıdır.
    Geçerli oturum modülü bunu gerektiği gibi yerine getiremez.
   </p>

   <p class="para">
    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.
   </p>

   <p class="para">
    <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> 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.
   </p>

   <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
    <span class="simpara">
     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
     <span class="function"><a href="function.session-regenerate-id.php" class="function">session_regenerate_id()</a></span> 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.
    </span>
   </p></blockquote>

   <p class="para">
    Özetle, oturum verileri ne <span class="function"><a href="function.session-regenerate-id.php" class="function">session_regenerate_id()</a></span>
    ne de <span class="function"><a href="function.session-destroy.php" class="function">session_destroy()</a></span> ile yok edilmeli, oturum
    verilerine erişimi denetlemek için zaman damgaları kullanılmalıdır.
    <span class="function"><a href="function.session-gc.php" class="function">session_gc()</a></span>&#039;nin oturum veri deposundaki eski verileri
    silmesine izin verilmelidir.
   </p>

  </div>

  <div class="sect2" id="features.session.security.management.session-locking">
   <h3 class="title">Oturum Kilitleme</h3>

   <p class="para">
    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.
   </p>

   <p class="para">
    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.
    <span class="function"><a href="function.session-start.php" class="function">session_start()</a></span> işlevi &#039;read_and_close&#039; seçeneği ile
    kullanılmalıdır: <code class="code">session_start([&#039;read_and_close&#039;=&gt;1]);</code>
    <span class="function"><a href="function.session-commit.php" class="function">session_commit()</a></span> kullanarak <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var>
    güncellendikten hemen sonra, mümkün olan en kısa sürede oturum
    kapatılmalıdır.
   </p>

   <p class="para">
    Geçerli oturum modülü, oturum etkin olmadığında <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var>
    üzerinde herhangi bir değişiklik algılamaz. Oturum etkin değilken
    <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> üzerinde değişiklik yapmamak geliştiricinin
    sorumluluğundadır.
   </p>

  </div>

  <div class="sect2" id="features.session.security.management.active-sessions">
   <h3 class="title">Etkin Oturumlar</h3>

   <p class="para">
    Geliştiriciler, her kullanıcı için tüm etkin oturumları izlemelidir. Ve
    kullanıcılara kaç tane etkin oturum, hangi IP&#039;den (ve alandan), ne kadar süredir
    etkin oldukları vs. bildirilmelidir. PHP bunları takip etmez. Bunu
    geliştiricilerin yapacağı varsayılır.
   </p>

   <p class="para">
    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.
   </p>

   <p class="para">
    En basit uygulamalardan biri &quot;oturum kimliği ile öncelenmiş kullanıcı
    kimliği&quot;dir ve gerekli bilgiler <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> içinde saklanır.
    Birçok veritabanı, bu öneki seçebilmektedir. Geliştiriciler bunun için
    <span class="function"><a href="function.session-regenerate-id.php" class="function">session_regenerate_id()</a></span> ve
    <span class="function"><a href="function.session-create-id.php" class="function">session_create_id()</a></span> kullanabilir.
   </p>

   <div class="warning"><strong class="warning">Uyarı</strong>
    <p class="simpara">
     Gizli verileri asla önek olarak kullanmayın. Kullanıcı kimliği gizliyse
     <span class="function"><a href="function.hash-hmac.php" class="function">hash_hmac()</a></span> önerilir.
    </p>
   </div>

   <div class="warning"><strong class="warning">Uyarı</strong>
    <p class="simpara">
     Bu uygulama için <a href="session.configuration.php#ini.session.use-strict-mode" class="link">session.use_strict_mode</a>
     yönergesinin etkinleştirilmesi zorunludur. Etkin olduğundan emin olun.
     Aksi takdirde aktif oturum veritabanı tehlikeye girebilir.
    </p>
   </div>

   <p class="para">
    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.
   </p>

  </div>

  <div class="sect2" id="features.session.security.management.session-and-autologin">
   <h3 class="title">Oturum ve Otomatik Oturum Açmak</h3>

   <p class="para">
    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.
   </p>

   <p class="para">
    <span class="function"><a href="function.setcookie.php" class="function">setcookie()</a></span> kullanarak otomatik oturum açma anahtarı
    olarak tek seferlik güvenli bir aşlama anahtarı kullanın. SHA-2&#039;den daha
    güçlü bir aşlama algoritması kullanın. Örneğin, <var class="filename">/dev/urandom</var>
    veya <span class="function"><a href="function.random-bytes.php" class="function">random_bytes()</a></span>&#039;dan rastgele verilerle SHA-256 veya üstü.
   </p>

   <p class="para">
    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.
   </p>

   <p class="para">
    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.
   </p>

   <p class="para">
    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.
   </p>

  </div>

  <div class="sect2" id="features.session.security.management.csrf">
   <h3 class="title">CSRF (Siteler Arası Talep Sahtekarlıkları) Saldırıları</h3>

   <p class="para">
    Oturumlar ve kimlik doğrulama, CSRF saldırılarına karşı koruma sağlamaz.
    Geliştiriciler, CSRF korumasını kendileri gerçeklemelidir.
   </p>

   <p class="para">
    CSRF koruması için <span class="function"><a href="function.output-add-rewrite-var.php" class="function">output_add_rewrite_var()</a></span>
    kullanılabilir. Daha fazla bilgi işlevin sayfasında bulunabilir.
   </p>

   <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
    <span class="simpara">
     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
     <span class="function"><a href="function.output-add-rewrite-var.php" class="function">output_add_rewrite_var()</a></span> kullanılması önerilmez.
    </span>
   </p></blockquote>

   <p class="para">
    Çoğu sayfa uygulama çerçevesi CSRF korumasını destekler. Daha fazla
    ayrıntı için sayfa uygulama çerçevesi kılavuzunuza bakılabilir.
   </p>

   <p class="para">
    PHP 7.3&#039;ten itibaren, oturum çerezi için SameSite özniteliği
    ayarlanabiliyor. Bu, CSRF güvenlik açıklarını azaltabilecek ek bir
    önlemdir.
   </p>
  </div>
 </div><?php manual_footer($setup); ?>