Merhaba
Uygulama güvenliğinin belkide en önemli noktası literatürde Input Validation olarak adlandırılan Girdi Doğrulama yaklaşımıdır. Girdi doğrulamalarını gerçekleştirirkende beyaz liste (whitelisting) yapılması son derece önemlidir.
Bu yazıda, geçtiğimiz günlerde karşılaştığım ve test ettiğimde oldukça başarı bulduğum bir kütüphane olan Respect Validation tanıtılacaktır.
Projelere Entegrasyonu
Respect Validation kütüphanesine Packagist üzerinden erişilebilmektedir. Bu sayede composer kullanımı ile projenize rahatça import edebilirsiniz.
composer require respect/validation
Kullanım
Kütüphanenin sunduğu özelliklere bakarsak hemen hemen pek çok ihtiyacı karşılamaktadır.
Basit Kontroller
Örneğin basit bir Integer değer kontrolü aşağıdaki şekilde yapılabilir.
use Respect\Validation\Validator as v; $number = 123; v::numeric()->validate($number); //true
Zincirleme Kontroller
Örneğin bir kullanıcı girdisinin sadece alphanumeric değer içermesi, herhangi bir whitespace karakterin olmaması ve 1 ile 15 karakter uzunluğunda olması gerekiyorse, bunun kontrolü aşağıdaki şekilde yapılabilir.
use Respect\Validation\Validator as v; $usernameValidator = v::alnum()->noWhitespace()->length(1,15); $usernameValidator->validate('mehmet'); //true
Şahsen bu özelliği başarılı bulmaktayım. Herhangi bir kontrol logic hatasına mahal vermemek hemde kısa kod yazabilmek adına son derece önemli.
Bunun haricinde şöyle bir durumla da karşılaşmış olabilirsiniz; bir objenin birden fazla özelliği için kontrol gerçekleştirmek. Örneğin aşağıdaki gibi bir obje olduğunu düşünelim.
$user = new stdClass; $user->name = 'Alexandre'; $user->birthdate = '1987-07-01';
name ve birthdate değerleri için gene tek bir zincir içerisinde doğrulama gerçekleştirilebilir.
$userValidator = v::attribute('name', v::string()->length(1,32)) ->attribute('birthdate', v::date()->minimumAge(18)); $userValidator->validate($user); //true
Download
Bu yazıda kaleme aldığımız Respect Validation’a https://packagist.org/packages/respect/validation linkinden erişebilirsiniz.