Submitted Form, baik dengan metode GET maupun POST perlu di filter. Filter ini digunakan untuk mencegah penggunaan berbagai teknik injeksi dan intrusi keamanan data, seperti SQL Injection, XSS dll. Ada beberapa solusi yang biasa saya gunakan.
Yang pertama, membuat fungsi PHP yang melakukan filter data yang dikirim tersebut:
[sourcecode language=”php”]
function strfilter($input)
{
$input=trim($input);
$input=strip_tags($input);
$input=nl2br($input);
$input=addslashes($input);
$input=stripslashes($input);
$input=str_ireplace("’", "%", $input);
$input=str_ireplace( "”", ‘%’, $input );
$input=str_ireplace( ‘""’, ‘%’, $input );
$query = preg_replace( ‘|(?<!%)%s|’, "’%s’", $input );
$input=htmlentities($input, ENT_QUOTES);
$input=ltrim($input);
$input=rtrim($input);
return $input;
}
[/sourcecode]
Untuk penggunaanya cukup mudah:
[sourcecode language=”php”]
$data_terfilter = strfilter($_POST[‘judul_berita’);
[/sourcecode]
Nah, solusi ini efektif jika digunakan pada form dengan elemen yang sedikit, jika terdiri dari banyak elemen cukup menyulitkan juga. Untuk itulah, buatlah sebuah fungsi baru yang digunakan untuk melakukan filtering form HTML secara keseluruhan.
[sourcecode language=”php”]
function filter_submittedform($submitted_forms){
$array = array();
foreach(array_keys($submitted_forms) as $forms){
$array[$forms] = strfilter($submitted_forms[$forms]);
}
return $array;
}
[/sourcecode]
Untuk penggunaanya:
[sourcecode language=”php”]
$data_post = filter_submittedform($_POST);
//atau
$data_get = filter_submittedform($_GET);
[/sourcecode]
Balikan dari fungsi tersebut adalah sebuah array dengan isi yang telah terfilter. Sekarang anda bisa langsung melakukan pengolahan lebih lanjut array ini ke database tanpa perlu difilter lagi atau khawatir mengandung script injection.
Selamat mencoba!