Cara Efektif Mencegah XSS Attack pada PHP

Cara Efektif Mencegah XSS Attack pada PHP – Banyak cara yang sering dilakukan oleh peretas untuk mendapatkan informasi sensitif atau melakukan hal tertentu di website kita. Salah satu diantaranya adalah menggunakan cara XSS Attack atau HTML Injection.

Salah satu bagian pada website kita yang sering diserang adalah bagian form, khususnya form login. Apabila form tidak divalidasi terlebih dahulu maka akan berakibat fatal. Jika tanpa divalidasi terlebih dahulu, maka kode apapun seperti JavaScript yang dimasukkan ke form tersebut akan dieksekusi.

Apa itu XSS Attack pada PHP?

Cross-site scripting (XSS) adalah salah satu jenis serangan keamanan web di mana penyerang menyisipkan kode script ke dalam situs web. Kode script ini kemudian dieksekusi oleh browser pengguna, yang dapat mengakibatkan kebocoran informasi sensitif dan memungkinkan penyerang mengambil kontrol atas akun pengguna.

Untuk mencegah serangan XSS, pengembang web harus memvalidasi dan menyaring input dari pengguna, serta memastikan tampilan halaman web tidak memungkinkan injeksi kode script. Teknologi keamanan seperti Content Security Policy (CSP) juga dapat membantu melindungi aplikasi web dari serangan XSS.

Bagaimana Cara Mencegah XSS Attack pada PHP?

Mengingat XSS Attack ini bisa dibilang berbahaya jika tidak ditangani, berikut ini telah saya siapkan sebuah potongan kode anti XSS PHP sederhana yang dapat digunakan untuk me-filter input-an yang masuk dari pengguna melalui form input.

<?php
function filter(string $string, int $mode = 0, bool $html = false): string {
  $string = trim($string);
  if($mode == 0) {
    return addslashes($string);
  }
  
  $string = stripslashes($string);
  return $html ? $string : htmlspecialchars($string);
}

// Cara penggunaan
echo filter('<b>Anti XSS Sederhana</b>', 1); // <b>Anti XSS Sederhana</b>
echo filter('<b>Anti XSS Sederhana</b>', 0); // Anti XSS Sederhana
?>

Kode di atas ktia telah membuat fungsi anti XSS Attack dengan PHP. Fungsi tersebut bernama filter() dengan 3 parameter yang masing-masing sebagai berikut.

  1. Parameter $string harus diisi dengan string dari input-an pengguna yang akan difilter.
  2. Parameter $mode bersifat opsional yang dapat diisi angka 0 (tidak difilter) dan 1 (difilter).
  3. Parameter $html bersifat opsional yang dapat diisi dengan true atau false untuk memfilter string.

Perlu diperhatikan bahwa kode di atas adalah kombinasi dari beberapa fungsi bawaan PHP yakni addslashes(), htmlspecialchars(), addslashes(), dan stripslashes(). Perlu diingat, kode di atas bukan untuk mencegah SQL Injection. Artikel tentang SQL Injection akan saya bahas terpisah.

Penutup

Sebagai penulis code atau programmer, kita perlu memvalidasi input-an apa saja yang akan dilakukan oleh pengguna terhadap form pada website kita. Kita wajib mencegah segala kemungkinan terjadi.

Demikian artikel pada kesempatan kali ini mengenai cara efektif mencegah XSS attack pada PHP. Sekian dari saya dan semoga bermanfaat.

Bagikan Ke

Leave a Reply

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *