Tutoral kali ini kita akan membahas bagaimana cara mengubah karakter khusus menjadi entitas HTML di PHP dengan menggunakan fungsi htmlspecialchars()
. Fungsi htmlspecialchars()
adalah fungsi bawaan PHP sehingga anda tidak memerlukan library pihak ketiga.
Berikut ini adalah deskripsi fungsi htmlspecialchars()
.
htmlspecialchars(
string $string,
int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401,
?string $encoding = null,
bool $double_encode = true
): string
Code language: PHP (php)
Penjelasan mengenai parameter yang terdapat pada fungsi htmlspecialchars()
.
$string
adalah string atau kalimat yang akan di filter.$flags
pada dasarnya, parameter ini digunakan untuk menahan satu atau lebih tanda yang menentukan bagiamana cara menangani urutan unit kode yang tidak valid, tanda kutip, dan jenis dokumen yang digunakan. nilai bawaannya adalahENT_QUOTES | ENT_COMPAT | ENT_HTML401
. Untuk daftar variabel konstanta yang dat digunakan akan dibahas dibawah.$encoding
digunakan untuk mendefinisikan pengkodean yang digunakan saat mengkonversi karakter, parameter ini bersifat opsional.$double_encode
secara bawaan berfungsi untuk mengaktifkan apakah ingin mengkonversi semua kode atau karakter khusus yang terdapat di string atau tidak.
Fungsi htmlspecialchars()
akan memproses $string
dan akan mengembalikan $string
baru dengan karakter atau tag yang sudah diubah menjadi entitas HTML. Berikut ini adalah daftar karakter khusus menjadi entitas HTML.
Simbol | Nama | Pengganti |
---|---|---|
& | Simbol dan | & |
“ | Kutipan ganda | "e; kecuali ENT_NOQUOTES di aktifkan |
‘ | Kutipan tunggal | ' untuk ENT_HTML401 atau ' untuk ENT_XML1 , ENT_XHTML atau ENT_HTML5 , hanya jika ENT_QUOTES diaktifkan |
< | Kurang dari | < |
> | Lebih dari | > |
Secara bawaan seperti yang sudah dijelaskan diatas, parameter $flags
memfilter ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401
, anda dapat mengubahnya dengan data konstanta dibawah ini.
Konstanta | Deskripsi |
---|---|
ENT_COMPAT | Mengubah tanda kutip ganda dan membiarkan tanda kutip tunggal. |
ENT_QUOTES | Mengubah tanpa kutip ganda dan kutipan tunggal. |
ENT_NOQUOTES | Membiarkan tanda kutip ganda dan kutipan tunggal. |
ENT_IGNORE | Membuang unit kode yang tidak valid secara senyap, alih-alih mengembalikan string kosong. Tidak disarankan menggunakan variabel ini. |
ENT_SUBTITUTE | Mengganti unit kode yang tidak valid dengan karakteer pengganti Unicode U+FFFD (UTF-8) atau � (jika tidak) akan mengembalikan string kosong. |
ENT_DISALLOWED | Mengganti poin kode yang tidak valid untuk jenis dokumen yang diberikan dengan karakter pengganti Unicode U+FFFD (UTF-8) atau � (jika tidak) membiarkan apa adanya. Ini mungkin berguna, misalnya untuk memastikan kelengkapan dokumn XML dengan konten eksternal yang disematkan. |
ENT_HTML401 | Menangani karakter sebagai HTML versi 4.01. |
ENT_XML1 | Manangani karakter sebagai XML 1. |
ENT_XHTML | Manangani karakter sebagai XHTML. |
ENT_HTML5 | Menangani karakter sebagai HTML 5. |
Fungsi htmlspecialchars()
di PHP sangat berguna untuk menangani keamanan pada website, khususnya pada bagian formulir input. Fungsi ini dapat menangani dengan cara merubah kode asli menjadi entitas, terutama serangan XSS.
Baca juga: Mengganti Kata Di PHP Dengan Fungsi str_replace()
Apa itu XSS?
XSS atau Cross-site Scripting adalah teknik serangan yang digunakan penyerang untuk dapat menyuntikan kode berbahaya ke dalam website.
Sebagai contoh, apabila anda memiliki kolom komentar, formulir pendaftaran, dan atau semacamnya yang memungkinkan pengguna lain secara sah memasukan data dari website anda ke database, dan apabila tidak di filter lalu dimasukkan kode berbahaya tersebut maka komentar atau data apapun yang tidak terfilter akan menampikan kode jahat tersebut.
Misalnya, seorang penyerang memasukan kode pada formulir tersebut dengan bermaksud mengalihkan situs anda kesitus yang lain, dengan script dibawah ini.
<script>location.replace('URL website berbahaya');</script>
Code language: HTML, XML (xml)
Kode diatas berfungsi untuk mengalihkan situs, dan apabila penyerang memasukan kode tersebut, maka setiap pengunjung yang datang ke situs anda akan otomatis teralihkan.
Penggunaan fungsi htmlspecialchars()
Sebelum memulai cara penggunaan htmlspecialchars()
, berikut ini adalah bagaimana PHP menampilkan kode HTML tanpa di filter. Anggap saja variabel $html
dibawah ini berasal dari database anda.
<?php
$html = "<script>alert('Halo XSS')</script>";
echo $html;
Code language: HTML, XML (xml)
Kode PHP diatas akan menampilkan pesan alert seperti gambar dibawah ini.
Mungkin kode alert tersebut tidak berbahaya, namun bagaimana jika situs anda dialihkan ke situs lain yang berbahaya? Maka fungsi htmlspecialchars()
bisa jadi solusi untuk mengubah karakter khusus menjadi entitas HTML sehingga sedikit lebih aman. Berikut ini contoh kodenya.
Kode diatas akan menampilkan kode asli yang berada di variabel $html
sebagai berikut.
Namun jika anda view-source di browser maka kode yang akan tampil dibelakangnya seperti dibawah ini.
Demikian tutorial tentang mengubah karakter khusus menjadi entitas di HTML dengan menggunakan fungsi htmlspecialchars()
. Jika ada pertanyaan silahkan tinggalkan komentar dibawah ya.