Last active
July 12, 2024 03:55
-
-
Save rizkytegar/8779a088867912b825f739a48923e990 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function e($value, $doubleEncode = true) | |
{ | |
if ($value instanceof DeferringDisplayableValue) { | |
$value = $value->resolveDisplayableValue(); | |
} | |
if ($value instanceof Htmlable) { | |
return $value->toHtml(); | |
} | |
if ($value instanceof BackedEnum) { | |
$value = $value->value; | |
} | |
return htmlspecialchars($value ?? '', ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8', $doubleEncode); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Kode PHP di atas adalah sebuah fungsi bernama
e
yang digunakan untuk memastikan bahwa data yang dimasukkan ke dalam halaman web aman dari serangan XSS (Cross-Site Scripting). Fungsi ini akan mengubah karakter khusus dalam teks menjadi entitas HTML yang aman, sehingga tidak dieksekusi sebagai kode berbahaya oleh browser. Mari kita jelaskan langkah demi langkah dengan bahasa yang mudah dipahami:Penjelasan Fungsi
e
Parameter:
true
) yang menentukan apakah karakter yang sudah dienkode harus dienkode lagi atau tidak.Pengecekan Tipe Data:
resolveDisplayableValue()
untuk mendapatkan nilai yang sebenarnya.toHtml()
untuk mendapatkan representasi HTML dari nilai tersebut.value
.Mengamankan Data:
htmlspecialchars()
digunakan untuk mengubah karakter khusus (seperti<
,>
,&
, dan"
atau'
) menjadi entitas HTML yang aman. Misalnya,<
diubah menjadi<
sehingga tidak diinterpretasikan sebagai kode HTML oleh browser.ENT_QUOTES | ENT_SUBSTITUTE
digunakan untuk memastikan bahwa baik tanda kutip tunggal ('
) maupun ganda ("
) diubah menjadi entitas HTML, dan karakter yang tidak valid diganti dengan karakter pengganti.UTF-8
sebagai karakter encoding memastikan bahwa data ditangani dengan benar dalam format karakter yang umum digunakan.$doubleEncode
menentukan apakah karakter yang sudah dienkode harus dienkode lagi atau tidak.Kesimpulan
Dengan kata lain, fungsi
e
ini memastikan bahwa data yang kita masukkan ke dalam halaman web aman dengan mengubah karakter-karakter yang dapat berbahaya menjadi bentuk yang tidak akan dieksekusi oleh browser sebagai kode. Hal ini mencegah serangan XSS, di mana penyerang mencoba menyuntikkan kode berbahaya ke dalam halaman web untuk mencuri data atau merusak situs.Berikut adalah penjelasan ringkasnya dalam bahasa awam:
e
melindungi data yang akan ditampilkan di halaman web dengan mengubah karakter berbahaya menjadi aman.Jika ada bagian yang masih membingungkan atau ada pertanyaan lain, jangan ragu untuk bertanya!