Mengenal Validasi Form PHP Pada Server

Pada artikel kali ini, kami akan membahas mengenai validasi form pada PHP. Kita akan mempelajari cara validasi form untuk mencegah cross-site scripting dan HTML injection. Apa itu cross-site scripting? Cross-site scripting atau XSS adalah jenis serangan ke sebuah situs dengan cara menyisipkan kode script (biasanya JavaScript) ke dalam sebuah situs. Hal ini hanya akan berhasil jika situs tersebut memiliki fitur untuk menampilkan kembali isian form ke web browser, seperti form komentar. Lalu, apa itu HTML injection? HTML injection adalah istilah yang lebih spesifik terkait cara menyisipkan kode HTML ke dalam sebuah situs.

Penanganan untuk cross-site scripting maupun HTML injection merupakan hal yang sangat penting untuk programmer web, terutama dalam pembuatan kode form dengan PHP. Karena form pada dasarnya dapat diinput oleh siapa saja, maka kita perlu memproteksi situs dari kode-kode berbahaya yang bisa diinput oleh user melalui form.

Validasi Form: Mencegah Cross-site Scripting dan HTML Injection

Dalam validasi form, salah satu cara untuk menghindari cross-site scripting dan HTML injection adalah dengan membuat karakter-karakter yang memiliki makna di dalam HTML dan JavaScript untuk diubah menjadi named entity, yaitu menkonversi karakter khusus atau menghilangkan seluruh tag HTML atau script dari inputan user.

Untuk kedua keperluan ini, PHP memiliki fungsi htmlspecialchars() dan fungsi strip_tags(). Fungsi htmlspecialchars() akan mengkonversi empat karakter khusus HTML menjadi named entity sehingga tidak akan diproses oleh web browser. Keempat karakter tersebut adalah: <, >, & dan “. Keempat karakter khusus inilah yang membuat web browser akan menerjemahkan sebuah string menjadi kode HTML atau JavaScript. Sedangkan fungsi strip_tags() akan menghapus seluruh tag HTML dari inputan user.

Validasi Form dengan Htmlspecialchars atau Strip_tags?

Menggunakan fungsi htmlspecialchars() atau strip_tags(), tergantung kepada alur logika form yang kita buat. Untuk isian form seperti user_name, email, dan alamat akan lebih aman jika kita tidak membolehkan tag HTML sama sekali (menggunakan fungsi strip_tags()), namun untuk kotak form komentar, lebih baik menggunakan beberapa tag untuk diproses seperti tag <b>, tag <i>, atau tag <a>.

Fungsi strip_tags() memiliki argumen kedua yang bisa diisi dengan tag-tag HTML apa saja yang dibolehkan. Jika kita membolehkan tag <a>, <b> dan tag <i> untuk variabel $komentar, maka penulisannya bisa dibuat menjadi:

$komentar=strip_tags($komentar, ‘<a><b><i>’).

Sedangkan untuk fungsi htmlspecialchars(), jika Anda ingin karakter tanda kutip () juga diubah menjadi named entity, kita bisa menambahkan satu argumen optional untuk fungsi htmlspecialchars(), dengan pilihan ENT_QUOTES. Sehingga dalam contoh variabel $nama, kita bisa menulisnya menjadi:

$nama=htmlspecialchars($nama, ENT_QUOTES);

Mengenal Fungsi Htmlentities()

Selain fungsi htmlspecialchars() dan fungsi strip_tags(), dalam validasi form dan karakter entity HTML, PHP masih memiliki satu lagi fungsi yang sering dipakai, yakni htmlentities().

Fungsi htmlentities() akan mengkonversi seluruh karakter khusus di dalam sebuah string menjadi entity, tidak hanya karakter <, >, & dan ” seperti pada fungsi htmlspecialchars(). Fungsi htmlentities() akan memproses karakter khusus lain seperti ™, ©, ®, atau ? menjadi named entity. Demikianlah pembahasan singkat mengenai validasi form PHP. Semoga bermanfaat.