Bir önceki PHP dersimde PHP’de GET Methodundan bahsetmiştim. Bu derste ise PHP’de POST ve GET Methodunda Güvenlik Önlemi alma konusundan bahsedeceğim. Yani kısacası PHP’de Güvenlik konusundan bahseceğim.

PHP’de POST ve GET Methodu kullanılarak basit bir şekilde güvenlik önlemi almak basittir. Bu konuda iki adet fonksiyon kullanarak bu işi çözeceğiz. Bu güvenlik önlemini almayı basit bir şekilde anlatmak için

<?php

$_METHOD = array_map(function($input){

return htmlspecialchars(trim($_METHOD));

},$_METHOD);

?>

şeklinde olacaktır. Şimdi bu fonksiyonları kısaca anlatmak gerekirse

htmlspecialchars()

htmlspecialchars() fonksiyonu inputlardan gönderilen herhangi bir verinin içinde html, javascript, css gibi kodları kullanılması durumunda bu kodları daha güvenli hale getirip çalışmasını engelleyecektir.

Bu fonksiyonun işleyişini basit bir şekilde anlatmak gerekirse bir form oluşturalım.

<form action=”guvenlik.php” method=”POST”>

Kullanıcı adı: <input type=”text” name=”kadi” >

<br>

Şifre : <input type=”password” name=”sifre” >

<br>

Göndericeğiniz Mesaj <br>

<textarea name=”mesaj”></textarea>

<input type=”submit” value=”Gönder”>

</form>

Oluşturduğumuz form

Şimdide guvenlik.php dosyasını oluşturalım ve içine şu kodları yazalım.

<?php

print_r($_POST);

?>


Göndereceğimiz FORM

Gönder tuşuna bastıktan sonra ekrana çıkacak görüntü şöyledir.

Gönderilen FORMun karşılığı

Böyle gözükmesi belki bir problem değil ama bu açığın sisteminizde bulunması kötü amacı olan kişiler için çok işlerini yarıyacak bir açıktır bu yüzden bu açığı kapatmanız önemlidir.

Şimdi htmlspecialchars() fonksiyonunu kullansak nasıl bir sonuç alırdık onu görelim. guvenlik.php’nin üstüne şu kodları ekleyelim

$_POST = array_map(function($post){
return htmlspecialchars($post);
},$_POST);

Bu kodları yazdıktan sonraki sonuç şöyle olacaktır.

htmlspecialchars() kullanınca karşımıza çıkacak sonuç

Gördüğünüz gibi htmlspecialchars() fonksiyonu HTML, CSS, Javascript kodlarının çalışmasını engeller.

trim()

trim() fonksiyonunun işlevi basittir inputunuzda gönderdiğiniz verinin başına ve sonuna boşluk koyarsanız onları siler ve ya 2. bir parametre olarak girdiğiniz karakter gönderdiğiniz verinin başında ve sonunda var ise onu kaldırır. trim() fonksiyonunun iki kullanım şeklindende bahsetmek gerekirse

<?php

trim($str);

trim($str,”-“);

?>

İlk kullanım fonksiyonun içine girdiğiniz metinin başındaki ve sonundaki boşlukları siler. İkinci kullanımında ise gönderdiğiniz verinin başında ve ya solunda işareti var ise onları siler.

Bahsettiğim iki fonksiyonu iç içe kullandığınız zaman ise XSS açığı gibi önemli bir açığı kesin bir şekilde kapatmış oluyorsunuz. Ayrıca trim() fonksiyonu ile de kötü niyetli kişilerin veritabanını şişirmesini engeller. Yani bu fonksiyonları kullanarak PHP’de Güvenlik konusunda büyük bir adım atmış olucaksınız.

Şimdi GET ve POST methodu ile gönderilen verilerin nasıl bahsettiğim güvenlik önlemini alabileceğimizden bahsetmek gerekirse.

<?php

// GET Methodundan Zararlı Kodlar Gönderilmemesi için
$_GET = array_map(function($get){
return htmlspecialchars(trim($get));
},$_GET);


// POST Methodundan Zararlı Kodlar Gönderilmemesi için
$_POST = array_map(function($post){
return htmlspecialchars(trim($post));
},$_POST);

?>

şeklinde kullanmamız yeterli olacaktır bu kodları sitenizde her yerde çağırılan bir dosyada kullanmak yeterli olacaktır.

Bu dersimizde PHP’de Güvenlik konusunda bir giriş yapmış olduk ve POST ve GET metodları ile gönderilen verileri güvenli bir hale getirmekten öğrenmiş olduk.