PHP ile Özel Karekter Filtreleme

PHP kullanılırken form üzerinden özel karekterlerin sunucuya gönderilmesi bazı zafiyetlere neden olabilir. Zafiyetlerin ve güvenlik açıklarının engellenmesi için kullanıcılardan gelen tüm özel karekterler filtrelenmelidir. Özel karekterleri filtrelemediğiniz durumda verilerinizi koruyamayabilirsiniz. Form veya kullanıcıdan sunucuya gelen tüm veriler için mutlakan özel karekterlerin filtrelenmesi önerilir. Aşağıdaki kod özel bazı karekterlerin filtrelenmesini sağlar. Burada POST ile alınan bir veride arama yapılmaktadır, aynı işlem GET ile alınan veriye de uygulanabilir.

İlk olarak whide list uygulamak güvenlik açısından daha öenmlidir. Aşağıda gelen değerin içinde özel karekterleri filtreleyen ve IP adresini doğrulayan bir fonksiyon görüyorsunuz.

$raw_input = $_GET['IPV4'];

$IPv4 = htmlspecialchars($raw_input, ENT_QUOTES, 'UTF-8');

if  (filter_var($IPv4, FILTER_VALIDATE_IP))
{ }

Kullanıcı girdilerini doğru bir şekilde filtreleyin: Verileri htmlspecialchars() veya filter_input() gibi fonksiyonlarla filtreleyerek HTML özel karakterlerini ve diğer potansiyel zararlı karakterleri temizleyin.

$name = filter_input(INPUT_POST, $_POST["veri"], FILTER_SANITIZE_SPECIAL_CHARS);

veya

htmlspecialchars($_POST["veri"], ENT_QUOTES, 'UTF-8')

veya

if (preg_match('/[\'^£$%&*()}{@#~?><>,|=+¬-]/', $_POST["veri"]))
{
  $_POST["veri"] = ''"; //Değeri sıfırla
}
else
{
  // Herhangi bir değişiklik yapma.
}

Aşağıda bir başka fonksiyon örneği bulunmaktadır.

function RemoveSpecialChar($str) {
      // Using str_replace() function 
      // to replace the word 
      $res = str_replace( array( '\'', '"',
      ',' , ';', '<', '>', '?', '-', '='), ' ', $str);
      // Returning the result 
      return $res;
      }
$_POST["veri"] = RemoveSpecialChar($_POST["veri"]);


Aşağıda da GET ile yazılan başka bir fonksiyon bulunmaktadır.

if  (preg_match('/[\'^£$";%&*()}{@#~?><>,|=+¬-]/', $_GET["veri"]))
{
$_GET["veri"]="";
}
else
{
}


Array içinde bir karekter filtreleme yapılması gerekiyorsa aşağıdaki kod örneği kullanılabilir.

<?php
function filtre(&$value) {
 $value = htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
}
    while($row = oci_fetch_assoc($parse)){

        array_walk_recursive($row, "filtre");

        $data[]=$row;
?>


Unutmayın güvenlik her şeyden önce gelir.



Google