Filter (Filter) PHP

Penyaring PHP digunakan untuk memverifikasi dan memfilter data yang berasal dari sumber yang tidak aman, seperti input pengguna.

Apa itu penyaring PHP?

Penyaring PHP digunakan untuk memverifikasi dan memfilter data yang berasal dari sumber yang tidak aman.

Pemverifikasi dan pengfilteran input pengguna atau data khusus adalah bagian penting dalam setiap aplikasi web.

Tujuannya untuk merancang ekspansi penyaring PHP adalah untuk membuat pengfilteran data lebih mudah dan cepat.

Mengapa menggunakan penyaring?

Hampir semua aplikasi web menggantungkan input eksternal. Data ini biasanya berasal dari pengguna atau aplikasi lain (seperti layanan web). Dengan menggunakan penyaring, Anda dapat memastikan bahwa aplikasi mendapatkan jenis input yang benar.

Anda harus selalu memfilter data eksternal!

Filter input adalah salah satu topik keamanan aplikasi yang paling penting.

Apa itu data eksternal?

  • Input data dari formulir
  • Cookies
  • Variabel server
  • Hasil query database

Fungsi dan pemfilteran

Untuk memfilter variabel, gunakan salah satu fungsi pemfilteran di bawah ini:

  • filter_var() - Memfilter variabel tunggal melalui pemfilteran yang ditentukan
  • filter_var_array() - Memfilter berbagai variabel melalui pemfilteran yang sama atau berbeda
  • filter_input - Mengambil variabel input satu, dan memfilternya
  • filter_input_array - Mengambil berbagai variabel input, dan memfilter mereka melalui pemfilteran yang sama atau berbeda

Pada contoh di bawah ini, kami menggunakan fungsi filter_var() untuk memverifikasi bilangan bulat:

<?php
$int = 123;
if(!filter_var($int, FILTER_VALIDATE_INT))
 {
 echo("Integer is not valid");
 }
else
 {
 echo("Integer is valid");
 }
?>

Kode di atas menggunakan pemfilteran "FILTER_VALIDATE_INT" untuk memfilter variabel. Karena bilangan bulat ini sah, output kode adalah: "Integer is valid".

Jika kami mencoba menggunakan variabel yang bukan bilangan bulat, outputnya adalah: "Integer is not valid".

Untuk daftar lengkap fungsi dan pemfilteran, kunjungi Panduan Filter PHP

Validating dan Sanitizing

Ada dua pemfilteran:

Pemfilteran Validating:

  • Digunakan untuk memverifikasi input pengguna
  • Aturan format yang ketat (seperti verifikasi URL atau E-Mail)
  • Jika sukses mengembalikan tipe yang diharapkan, jika gagal mengembalikan FALSE

Pemfilteran Sanitizing:

  • Digunakan untuk mengijinkan atau melarang karakter yang ditentukan di dalam string
  • Tidak ada aturan format data
  • Selalu mengembalikan string

Opsi dan tanda

Opsi dan tanda digunakan untuk menambahkan opsi pemfilteran ekstra ke pemfilteran yang ditentukan.

Pemfilteran yang berbeda memiliki berbagai opsi dan tanda.

Pada contoh di bawah ini, kami menggunakan filter_var() dan pilihan "min_range" serta "max_range" untuk memverifikasi bilangan bulat:

<?php
$var=300;
$int_options = array(
"options"=>array
 (
 "min_range"=>0,
 "max_range"=>256
 )
);
if(!filter_var($var, FILTER_VALIDATE_INT, $int_options))
 {
 echo("Integer is not valid");
 }
else
 {
 echo("Integer is valid");
 }
?>

Seperti kode di atas, opsi harus disisipkan ke dalam array yang dinamai "options". Jika digunakan tanda, tak perlu disisipkan di dalam array.

Karena angka adalah "300", dia tidak berada dalam rentang yang ditentukan, keluaran kode di atas akan adalah "Integer tidak valid".

Untuk daftar lengkap fungsi dan penyaring, kunjungi CodeW3C.com yang disediakan Panduan Filter PHPAnda dapat melihat opsi dan tanda yang tersedia untuk setiap penyaring.

Verifikasi input

Biarkan kami mencoba memverifikasi input yang datang dari formulir.

Hal pertama yang perlu kami lakukan adalah memastikan apakah ada data input yang kita cari.

Lalu kami menggunakan fungsi filter_input() untuk menyaring data input.

Dalam contoh di bawah, variabel input "email" dikirim ke halaman PHP:

<?php
if(!filter_has_var(INPUT_GET, "email"))
 {
 echo("Tipe input tidak ada");
 }
else
 {
 if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL))
  {
  echo "E-Mail tidak valid";
  }
 else
  {
  echo "E-Mail valid";
  }
 }
?>

Pengertian Contoh:

Contoh di atas memiliki variabel input (email) yang diirikan melalui metode "GET":

  1. Tingkatkan apakah ada variabel input jenis "GET" "email"
  2. Jika ada variabel input, cek apakah itu adalah alamat email yang valid

Pembersihan input

Biarkan kami mencoba membersihkan URL yang datang dari formulir.

Pertama, kami harus memastikan apakah ada data input yang kita cari.

Lalu, kami menggunakan fungsi filter_input() untuk mempersiapkan data input.

Dalam contoh di bawah, variabel input "url" dikirim ke halaman PHP:

<?php
if(!filter_has_var(INPUT_POST, "url"))
 {
 echo("Tipe input tidak ada");
 }
else
 {
 $url = filter_input(INPUT_POST, "url", FILTER_SANITIZE_URL);
 }
?>

Pengertian Contoh:

Contoh di atas memiliki variabel input (url) yang diirikan melalui metode "POST":

  1. Tingkatkan apakah ada variabel input jenis "POST" "url"
  2. Jika ada variabel input ini, lakukan pembersihan (hapus karakter ilegal) dan simpannya di variabel $url

Jika variabel input seperti ini: "http://www.W3非o法ol.com.c字符n/", maka variabel $url yang disulingkan harus seperti ini:

http://www.codew3c.com/

Saring masukan berbagai macam

Form biasanya terdiri dari beberapa bidang input. Untuk menghindari pemanggilan berulang filter_var atau filter_input, kami dapat menggunakan filter_var_array atau fungsi filter_input_array.

Dalam contoh ini, kami menggunakan fungsi filter_input_array() untuk menyaring tiga variabel GET. Variabel GET yang diterima adalah nama, usia, dan alamat email:

<?php
$filters = array
 (
 "name" => array
  (
  "filter"=>FILTER_SANITIZE_STRING
  ),
 "age" => array
  (
  "filter"=>FILTER_VALIDATE_INT,
  "options"=>array
   (
   "min_range"=>1,
   "max_range"=>120
   )
  ),
 "email"=> FILTER_VALIDATE_EMAIL,
 );
$result = filter_input_array(INPUT_GET, $filters);
if (!$result["age"])
 {
 echo("Usia harus berupa angka antara 1 dan 120.<br />");
 }
elseif (!$result["email"])
 {
 echo("E-Mail tidak valid.<br />");
 }
else
 {
 echo("Input pengguna valid");
 }
?>

Pengertian Contoh:

Contoh di atas memiliki tiga variabel input yang dikirim melalui metode "GET" (name, age dan email)

  1. Atur sebuah array yang berisi nama variabel input dan pengecualian untuk variabel input yang ditentukan
  2. Panggil fungsi filter_input_array(), parameternya termasuk variabel input GET dan array yang telah disetel sebelumnya
  3. Periksa apakah variabel $result memiliki input yang ilegal untuk variabel "age" dan "email". (Jika ada input ilegal,)

Parameter kedua fungsi filter_input_array() dapat berupa array atau ID pengecualian tunggal.

Jika parameter ini adalah ID pengecualian tunggal, pengecualian yang ditentukan akan menyaring semua nilai dalam array input.

Jika parameter ini adalah array, maka array ini harus mengikuti aturan di bawah ini:

  • Harus menjadi array yang berhubungan, yang mengandung variabel input yang adalah kunci array (contoh variabel input "age")
  • Nilai array ini harus menjadi ID pengefilteran, atau array yang menentukan pengefilteran, tanda, dan opsi

Penggunaan Filter Callback

Dengan menggunakan pengefilteran FILTER_CALLBACK, Anda dapat memanggil fungsi yang disesuaikan dan menggunakannya sebagai pengefilteran. Dengan cara ini, kita memiliki pengendalian penuh atas pengfilteran data.

Anda dapat membuat fungsi yang disesuaikan sendiri, atau menggunakan fungsi PHP yang sudah ada.

Tentukan cara yang akan Anda gunakan untuk menentukan fungsi pengefilteran, seperti cara yang digunakan untuk menentukan opsi.

Dalam contoh di bawah ini, kami menggunakan fungsi yang disesuaikan untuk mengganti semua "_" menjadi spasi:

<?php
function convertSpace($string)
{
return str_replace("_", " ", $string);
}
$string = "Peter_is_a_great_guy!";
echo filter_var($string, FILTER_CALLBACK, array("options"=>"convertSpace"));
?>

Hasil kode di atas seperti ini:

Peter adalah pria yang hebat!

Pengertian Contoh:

Contoh di atas mengganti semua "_" menjadi spasi:

  1. Buat fungsi yang mengganti "_" dengan spasi
  2. Panggil fungsi filter_var(), parameternya adalah pengefilteran FILTER_CALLBACK serta array yang mengandung fungsi kami