Mencegah CSS & HTML Injection Pada Form Input

Keamanan suatu website tentu harus menjadi perhatian utama bagi para web developer. Karena jika tidak mementingkan keamanan websitenya maka siapapun bisa masuk dan merubah isi data dari website si web developer tersebut.

Salah satu celah atau bug dari suatu website yaitu salah satunya CSS & HTML Injection ini. Nah, bagaimana cara untuk mencegahnya? Disini saya memiliki dua cara dengan penggunaan string yang berbeda dan memiliki hasil dan tujuan yang berbeda.

Sebagai contoh, saya memiliki code program seperti berikut. Jika diperhatikan code tersebut, kita tidak melihat adanya filter yang seharusnya ada untuk mencegah html injection terjadi.
<html>
<head>
<title>Unsada Coder</title>
</head>
<body>
<form method="POST">
<input type="text" name="cari" placeholder="Cari Apa?">
<input type="submit" name="submit" value="Cari">
</form>
<?php
error_reporting(0);
$cari = $_POST['cari'];
echo '<br>Hasil pencarian '.$cari.' tidak ditemukan.';
?>
</body>
</html>
Mencegah CSS & HTML Injection Pada Form Input
Perhatikan gambar diatas, ketika saya mengetikkan plaintext 'unsadacoder' maka akan tampil seperti biasanya ya. Namun ketika saya mengetikkan kode html pada form input tersebut maka akan tampil seperti gambar berikut ini.
Mencegah CSS & HTML Injection Pada Form Input
Nah, lalu bagaimana caranya mencegah hal tersebut? Seperti yang saya katakan sebelumnya, bahwa disini ada dua cara untuk mencegah html injection itu terjadi, yaitu dengan penggunaan string:
  1. htmlspecialchars()
  2. strip_tags()
Apa perbedaannya? Jika kita lihat dari hasil implementasinya, terlihat ada perbedaan yang signifikan yaitu penggunaan htmlspecialchars() akan merubah kode html kedalam bentuk character kemudian ditampilkan. Sedangkan strip_tags() akan menghapus kode html sebelum ditampilkan.

Untuk penggunaannya silahkan perhatikan kode berikut yang ditandai warna hijau.
<html>
<head>
<title>Unsada Coder</title>
</head>
<body>
<form method="POST">
<input type="text" name="cari" placeholder="Cari Apa?">
<input type="submit" name="submit" value="Cari">
</form>
<?php
error_reporting(0);
$cari = htmlspecialchars($_POST['cari']);
echo '<br>Hasil pencarian '.$cari.' tidak ditemukan.';
?>
</body>
</html>
Berikut ini adalah contoh dari hasil filter menggunakan htmlspecialchars().
Mencegah CSS & HTML Injection Pada Form Input
Sedangkan gambar berikut ini adalah hasil menggunakan strip_tags().
Mencegah CSS & HTML Injection Pada Form Input
Mana yang lebih baik? Tentukan pilihanmu, sekarang haha. Terimakasih. Semoga bermanfaat.
Comments