<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/security.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'security.variables.php',
    1 => 'Kullanıcıdan Gelen Bilgi',
    2 => 'Kullanıcıdan Gelen Bilgi',
  ),
  'up' => 
  array (
    0 => 'security.php',
    1 => 'G&uuml;venlik',
  ),
  'prev' => 
  array (
    0 => 'security.errors.php',
    1 => 'Error Reporting',
  ),
  'next' => 
  array (
    0 => 'security.hiding.php',
    1 => 'PHP\'yi gizlemek',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'security/variables.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="security.variables" class="chapter">
 <h1 class="title">Kullanıcıdan Gelen Bilgi</h1>

 <p class="para">
  <abbr title="PHP: Hypertext Preprocessor">PHP</abbr> de yazılmış bir uygulamanın en zayıf noktası, dilin
  kendisinde olan bir sorun değil, yazılan uygulamanın bazı varsayımlara
  dayanarak güvenliği göz önünde bulundurmamasıdır. Bundan dolayı bir uygulama
  yazarken güvenliğe önem vermeli ve kullanıcıdan gelen bilginin varsayıma
  dayanmadan denetlenmesini sağlamasınız.
  <div class="example" id="example-1">
   <p><strong>Örnek 1 - Tehlikeli Değişken Kullanımı</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// kullanıcının ev dizininden bir dosyayı silelim...<br />// acaba başka birininkini mi silecek?<br /></span><span style="color: #0000BB">unlink </span><span style="color: #007700">(</span><span style="color: #0000BB">$fena_veri</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Girişle ilgili kayıt tutalım...<br />// acaba /etc/passwd dosyasına mı yazacak?<br /></span><span style="color: #0000BB">fwrite </span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">, </span><span style="color: #0000BB">$fena_veri</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Denemek için birşeyler çalıştıralım...<br />// acaba tüm dosyaları silecek bir 'rm -rf' komutu mu?<br /></span><span style="color: #0000BB">exec </span><span style="color: #007700">(</span><span style="color: #0000BB">$fena_veri</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="para">
  Kod yazarken her zaman yazdıklarınızı dikkatlice inceleyip, kullanıcıdan
  gelen bilgilerin doğru ve tam şekilde denetlenip onaylandığına emin olmanız
  gerekir. Kullanıcıdan gelen bilgiyi alıp işleme koyduğunuz her durumda
  kendinize şu soruları sorabilirsiniz:
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     Bu betik benim istemediğim dosyalara erişim, değişiklik veya silme
     imkanı veriyor mu?
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Beklenmeyen bir bilgi geldiğinde de istenilen işlem yapılacak mı?
    </span>
   </li>
   <li class="listitem">
   <span class="simpara">
     Bu betik başka bir amaç için kullanılabilir mi?
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Bu betik sistemde varolan başka betiklerle birlikte kötü amaçlı
     kullanılabilir mi?
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Yapılan işlemler daha sonra inceleme amacıyla kayda alınacak mı?
    </span>
   </li>
  </ul>
 </p>
 <p class="para">
  Yaptığınız projenin uygunluğuna göre kod yazmadan önce ve yazarken bu
  soruları sık sık kendinize sormanız, proje bittiğinde değerlendirme yapıp
  değişiklikler yapmanızdan çok daha faydalı olacaktır. Bu sayede proje
  tasarımını güvenlik düşünülerek yapmış olacak ve daha sonra güvenlik
  dolayısıyla ciddi değişiklikler yapma zorunluluğunuz ortadan kalkacaktır.
  Güvenliğe vereceğiniz öncelikli önem, daha sonra yapacağınız ve güvenliği
  riske atacak değişikliklerden çok daha faydalıdır.
 </p>
 <p class="para">
  Belirtilen bir değişkenin değerini, kaynağı veya geçerliliği bozacağını
  düşündüğünüz register_globals, magic_quotes ve benzeri ayarlarları
  kapatmanız iyi olabilir. Hata bildirim kipi &#039;error_reporting(E_ALL)&#039;
  kullanımı, aynı zamanda uyarıları da göstereceği için kodunuzda sorun olup
  olmadığı hakkında daha iyi bilgi verebilir.
 </p>
</div>
<?php manual_footer($setup); ?>