PHP Respect Validation ile Input Validation

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.