Php Güvenlik Yöntemleri

Php Güvenlik Önlemleri

Php güvenlik önlemleri konumuzda kullanıcıdan veri alırken basit fonksiyon ile güvenlik önlemi alacağız. Bilindiği üzere kullanıcıdan verileri formlar aracılığı ile GET ve POST süper global değişkenleri ile alıyoruz. Uygulamamızdaki her türlü güvenlik zafiyeti tüm emeklerin boşa gitmesine neden olabilir. Bu nedenle en ufak detaylar bile göz ardı edilmemelidir.

Get veya Post ile aldığımız her verinin içerisindeki boşluklar, html etiketler ve tırnak işaretleri gibi güvenlik sorununa neden olabilecekleri temizlememiz gerekiyor. Öncelikle bu kontrolleri tek tek nasıl yaptığımızı aşağıdaki örnekten inceleyelim.

<?php
$uye_adi = htmlspecialchars(addslashes(trim($_POST["uye_adi"])));
$uye_sifre = htmlspecialchars(addslashes(trim($_POST["uye_sifre"])));
?>

Örneğimizde önce verinin sağında ve solunda boşluk var ise trim fonksiyonu ile temizliyoruz, addslashes fonksiyonu ile veri içerisindeki tırnak karakterlerini etkisiz hale getiriyoruz ve son olarak htmlspesiaclchars fonksiyonu ile html karakterleri etkisizleştiriyoruz. Fakat her veri için bu fonksiyonları tek tek yazmak kod içerisinde karmaşıklığa ve zaman kaybına neden olacaktır. Bu nedenle bir fonksiyon tanımlayarak karmaşıklığı önleyip, zamandan tasarruf edebiliriz.

<?php
function p($par, $st = false)
{
    if ($st) {
        return htmlspecialchars(addslashes(trim($_POST[$par])));
    } else {
        return addslashes(trim($_POST[$par]));
    }
}

$uye_adi = p('uye_adi');
$uye_sifre = p('uye_sifre');
?>

Yukarıdaki fonksiyonumuz ile ilk örneğimizin aynısı yaptık fakat kullanımı daha pratik hale getirdik. Böylece gerekli olan yerde sadece fonksiyona parametreyi göndermek yeterli olacaktır.

Örnek fonksiyonumuz iki parametreli bir fonksiyondur. Bu parametrelerin birincisi veriyi, ikincisi ise html karakter olması durumunda true yada false değer alıyor. İkinci parametre true olarak gönderildiğinde HTML için özel anlam ifade eden karakterler anlamsız hale döndürülecektir. Peki bu nerede işimize yarar derseniz. Basit bir örnek üyelik sistemli projenizde profildeki biyografi kısmına HTML kodları girmesini önlemek için kullanabilirsiniz.

<a href="https://www.mustafaazak.com/php-guvenlik-onlemleri">Php Güvenlik Önlemleri </a>

Yukarıdaki html kod fonksiyonumuzdan geçtikten aşağıdaki imlemeli hale dönüşecektir.

&lt;a href=\&quot;https://www.mustafaazak.com/php-guvenlik-onlemleri/\&quot;&gt;Php Güvenlik Önlemleri &lt;/a&gt;gt;

Html için özel anlam ifade eden karakterlerin imlemeleri;

  • ‘&’ (ampersand) ‘&amp;’ haline gelir.
  • ” (çift tırnak) ‘&quot;’ haline gelir.
  • ‘ (tek tırnak) ‘&#039’ haline gelir.
  • < (küçüktür) ‘&lt;’ haline gelir.
  • > (büyüktür) ‘&gt;’ haline gelir.

      Post süper global değişkeni için yaptığımız bu fonksiyonu değiştirerek aynı mantık ile get süper global değişkeni içinde yapabilirsiniz.

      Php Güvenlik Fonksiyonu

      Php güvenlik konusunda kullanmış olduğum bir fonksiyon daha var. Bu fonksiyon yine kullanıcıdan aldığımız veri içerisinde önem arz edebilecek kelimeleri yakalayıp farklı değerler ile değiştirerek ufak bir önlem daha almış oluyoruz.

      <?php
      function guvenlik($q)
      {
          $q = trim($q);
          $q = str_replace("script", "", $q);
          $q = str_replace("`", "", $q);
          $q = str_replace("'", "'", $q);
          $q = str_replace("-", "-", $q);
          $q = str_replace("&", "", $q);
          $q = str_replace("%", "", $q);
          $q = str_replace("<", "", $q);
          $q = str_replace(">", "", $q);
          $q = str_replace("iframe", "", $q);
          $q = str_replace("refresh", "", $q);
          $q = str_replace("style", "", $q);
          $q = str_replace("script", "", $q);
          $q = str_replace("<script", "", $q);
          $q = str_replace("</script", "", $q);
          $q = str_replace("/script", "", $q);
          $q = str_replace("<?", "", $q);
          $q = str_replace("?>", "", $q);
          $q = str_replace("SELECT *", "", $q);
          $q = str_replace("DELETE FROM", "", $q);
          $q = trim($q);
          return $q;
      }
      
      $gelen_veri = guvenlik($_POST['gelen_veri']);
      ?>

      Bu örneklerin yanı sıra Php Şifreleme Yöntemlerine göz atmanızı öneririm. Şifreleme yöntemlerindeki openssl_encrypt fonksiyonu ile verileri sadece kendinizin çözebileceği şekilde şifreleyerek veri güvenliğini sağlayabilirsiniz.

      Bir Cevap Yazın