Ubah Karakter Khusus Menjadi Entitas HTML Di PHP

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
): stringCode 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 adalah ENT_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.

SimbolNamaPengganti
&Simbol dan&
Kutipan ganda&quote; 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&lt;
>Lebih dari&gt;

Secara bawaan seperti yang sudah dijelaskan diatas, parameter $flags memfilter ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, anda dapat mengubahnya dengan data konstanta dibawah ini.

KonstantaDeskripsi
ENT_COMPATMengubah tanda kutip ganda dan membiarkan tanda kutip tunggal.
ENT_QUOTESMengubah tanpa kutip ganda dan kutipan tunggal.
ENT_NOQUOTESMembiarkan tanda kutip ganda dan kutipan tunggal.
ENT_IGNOREMembuang unit kode yang tidak valid secara senyap, alih-alih mengembalikan string kosong. Tidak disarankan menggunakan variabel ini.
ENT_SUBTITUTEMengganti unit kode yang tidak valid dengan karakteer pengganti Unicode U+FFFD (UTF-8) atau &#xFFFD; (jika tidak) akan mengembalikan string kosong.
ENT_DISALLOWEDMengganti poin kode yang tidak valid untuk jenis dokumen yang diberikan dengan karakter pengganti Unicode U+FFFD (UTF-8) atau &#xFFFD; (jika tidak) membiarkan apa adanya. Ini mungkin berguna, misalnya untuk memastikan kelengkapan dokumn XML dengan konten eksternal yang disematkan.
ENT_HTML401Menangani karakter sebagai HTML versi 4.01.
ENT_XML1Manangani karakter sebagai XML 1.
ENT_XHTMLManangani karakter sebagai XHTML.
ENT_HTML5Menangani 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.

Karakter Khusus Menjadi Entitas

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.

Fungsi htmlspecialchars()

Namun jika anda view-source di browser maka kode yang akan tampil dibelakangnya seperti dibawah ini.

View-source htmlspecialchars()

Demikian tutorial tentang mengubah karakter khusus menjadi entitas di HTML dengan menggunakan fungsi htmlspecialchars(). Jika ada pertanyaan silahkan tinggalkan komentar dibawah ya.

Komentar

Selamat, anda berkesempatan menjadi komentator pertama di artikel ini. Punya pertanyaan atau saran? Silahkan tinggalkan komentar untuk memulai diskusi.
Terima kasih telah memilih untuk meninggalkan komentar. Harap diingat bahwa semua komentar dimoderasi sesuai dengan kebijakan, dan informasi anda TIDAK akan dipublikasikan. Harap JANGAN gunakan kata kunci di kolom nama. Mari kita buat diskusi yang menarik dan bermakna.

Tinggalkan komentar

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.