PHP – Kullanıcı Girdilerini Temizleme İşlemi

18 Mart 2020 tarihinde Emre Can ÖZTAŞ tarafından paylaşıldı.

İncelediğim tüm kaynaklarda hep bahsedilen şudur: ‘Kullanıcı girdilerine hiç zaman güvenme, gerekirse bu konuda paranoyak ol!’. Bu tamamen geçerli ve gerekli bir konu. Bunun nedeni ise; sistemin işleyişini bozmak isteyen her zaman birileri olacaktır. Dolayısıyla; suç, sistemin düzenini bozmak isteyende değil sizde! Çünkü sisteminiz için güvenlik önlemlerini almak zorundasınız.

Bu yazıda; çeşitli durumlara karşı kullanıcı girdilerini temizleme konusundan bahsedeceğiz. Dolayısıyla; kullanıcı girdilerini nasıl temizleriz ve sistemimizin güvenliği nasıl daha iyi hale getirebiliriz konularından bahsedeceğiz.

JavaScript Temizleme

JavaScript girdilerini temizlemek için aşağıdaki REGEX’i kullanabiliriz.

'@<script[^>]*?>.*?</script>@si'

Yukarıdaki REGEX’i, preg_replace() fonksiyonu ile kullanalım.

$the_js_regex = '@<script[^>]*?>.*?</script>@si';
$the_output = preg_replace($the_js_regex , '', $the_input);

$the_output değişkeni, artık JavaScript kodlarından arınmış bir çıktıdır.

HTML Temizleme

HTML içeren girdileri temizlemek için aşağıdaki REGEX’i kullanabiliriz.

'@<[\/\!]*?[^<>]*?>@si'

Yukarıdaki REGEX’i, preg_replace() fonksiyonu ile kullanalım.

$the_html_regex = '@<[\/\!]*?[^<>]*?>@si';
$the_output = preg_replace($the_html_regex, '', $the_input);

$the_output değişkeni, artık HTML etiketlerinden arınmış bir çıktıdır.

CSS Temizleme

CSS kodlarını içeren girdileri temizlemek için aşağıdaki REGEX’i kullanabiliriz.

'@<style[^>]*?>.*?</style>@siU'

Yukarıdaki REGEX’i, preg_replace() fonksiyonu ile kullanalım.

$the_css_regex = '@<style[^>]*?>.*?</style>@siU';
$the_output = preg_replace($the_css_regex, '', $the_input);

$the_output değişkeni, artık CSS kodlarından arınmış bir çıktıdır.

Sonuç

Yukarıdaki anlattığımız durumları, her seferinde tek tek kontrol etmek yerine tek seferde de kontrol edebiliriz. Bunun için bir fonksiyon hazırlayalım, bu fonksiyonu diğer projelerimizde de kullanabiliriz.

<?php

function the_sanitize_input($the_input)
{
    $the_regex = array(
        '@<script[^>]*?>.*?</script>@si',
        '@<[\/\!]*?[^<>]*?>@si',
        '@<style[^>]*?>.*?</style>@siU'
    );

    $the_output = preg_replace($the_regex, '', $the_input);
    return ($the_output);
}

Yukarıdaki fonksiyonumuzda; basit olarak gelen girdi değerini, JavaScript, CSS ve HTML bakımından temizleyip temizlenmiş halini veriyoruz. Yazdığımız fonksiyonumuzu daha da genişletebilirsiniz. Örneğin; parametre olarak bir dizi tanımlayıp, bu dizinin değerlerini kontrol edebilirsiniz.

Kategoriler: [PHP] Etiketler: #input #PHP #sanitize

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

*
*

This site uses Akismet to reduce spam. Learn how your comment data is processed.