Filter Input Phalcon

Filter & sanitasi input pengguna adalah bagian penting dari pengembangan perangkat lunak. Mempercayai atau mengabaikan untuk membersihkan masukan pengguna dapat menyebabkan penyalahgunaan akses ke konten aplikasi Anda, terutama data pengguna, atau bahkan host-server aplikasi Anda.

komponen Phalcon \ Filter  menyediakan satu set filter yang umum digunakan dan helper sanitasi data. Ini menyediakan cara berorientasi objek sebagai ekstensi PHP filter.

Sanitasi Data 

Sanitasi adalah proses yang menghilangkan karakter tertentu dari value, yang tidak diperlukan atau diinginkan oleh pengguna atau aplikasi. Dengan sanitasi masukan, kita memastikan bahwa integritas aplikasi akan utuh.

<?php

$filter = new \Phalcon\Filter();

// returns "someone@example.com"
$filter->sanitize("some(one)@exa\mple.com", "email");

// returns "hello"
$filter->sanitize("hello<<", "string");

// returns "100019"
$filter->sanitize("!100a019", "int");

// returns "100019.01"
$filter->sanitize("!100a019.01a", "float");

Sanitasi dari Controller 

Anda dapat mengakses objek Phalcon\Filter  dari kontroler Anda ketika mengakses input data GET atau POST (melalui obyek request). Parameter pertama adalah nama variabel yang akan diperoleh; yang kedua adalah filter yang akan diterapkan di atasnya.

<?php

class ProductsController extends \Phalcon\Mvc\Controller
{

    public function indexAction()
    {

    }

    public function saveAction()
    {

        // Sanitizing price from input
        $price = $this->request->getPost("price", "double");

        // Sanitizing email from input
        $email = $this->request->getPost("customerEmail", "email");

    }

}

Filter Parameter Action 

Contoh berikutnya menunjukkan Anda bagaimana untuk membersihkan parameter dalam action:

<?php

class ProductsController extends \Phalcon\Mvc\Controller
{

    public function indexAction()
    {

    }

    public function showAction($productId)
    {
        $productId = $this->filter->sanitize($productId, "int");
    }

}

Filter data 

Selain sanitasi, Phalcon \ Filter juga menyediakan filter dengan menghapus atau memodifikasi data masukan ke format yang kita harapkan.

<?php

$filter = new \Phalcon\Filter();

// returns "Hello"
$filter->sanitize("<h1>Hello</h1>", "striptags");

// returns "Hello"
$filter->sanitize("  Hello   ", "trim");

Jenis Filter Built-in  

Berikut ini adalah filter built-in  yang disediakan oleh komponen ini:

Nama Deskripsi
string Menghapus Tag
email Hapus semua karakter kecuali huruf, angka dan # $% & * + – / = ^ _ `!? {|} ~ @ []..
int Hapus semua karakter kecuali angka, plus dan minus.
float Hapus semua karakter kecuali angka, dot, plus dan minus.
alphanum Hapus semua karakter kecuali [a-zA-Z0-9]
striptags Menerapkan strip_tags fungsi
trim Menerapkan memangkas fungsi
lower Menerapkan strtolower fungsi
upper Menerapkan strtoupper fungsi

Membuat Filter Anda sendiri 

Anda dapat menambahkan filter Anda sendiri untuk Phalcon \ Filter . Fungsi filter bisa berupa fungsi anonim:

<?php

$filter = new \Phalcon\Filter();

//Using an anonymous function
$filter->add('md5', function($value) {
    return preg_replace('/[^0-9a-f]/', '', $value);
});

//Sanitize with the "md5" filter
$filtered = $filter->sanitize($possibleMd5, "md5");

Atau, jika Anda suka, Anda dapat menerapkan filter dalam kelas:

<?php

class IPv4Filter
{

    public function filter($value)
    {
        return filter_var($value, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4);
    }

}

$filter = new \Phalcon\Filter();

//Using an object
$filter->add('ipv4', new IPv4Filter());

//Sanitize with the "ipv4" filter
$filteredIp = $filter->sanitize("127.0.0.1", "ipv4");

Sanitasi dan Filter Komplek 

PHP sendiri menyediakan ekstensi filter yang sangat baik yang dapat Anda gunakan. Periksa dokumentasi: data Filtering pada Dokumentasi PHP

Menerapkan Filter Anda sendiri 

antarmuka Phalcon \ FilterInterface  harus diimplementasikan untuk menciptakan layanan penyaringan Anda sendiri menggantikan yang disediakan oleh Phalcon.

Terjemahan dr Filter & Sanitasi Phalcon
http://docs.phalconphp.com/en/latest/reference/filter.html