Cara menggunakan htmlspecialchars xss

Cross-postingan ini sebagai referensi terkonsolidasi dari SO Beta dokumentasi yang sedang offline.

Masalah

Skrip lintas situs adalah eksekusi kode jarak jauh yang tidak disengaja oleh klien web. Aplikasi web apa pun dapat membuka dirinya ke XSS jika mengambil input dari pengguna dan mengeluarkannya langsung di halaman web. Jika input menyertakan HTML atau JavaScript, kode jarak jauh dapat dijalankan ketika konten ini diberikan oleh klien web.

Misalnya, jika pihak ke-3 berisi file JavaScript:

// http://example.com/runme.js
document.write("I'm running");

Dan aplikasi PHP secara langsung menampilkan string yang dilewatkan ke dalamnya:

' . $_GET['input'] . '
';

Jika parameter GET yang tidak dicentang mengandung maka output dari skrip PHP adalah:

JavaScript pihak ke-3 akan berjalan dan pengguna akan melihat "Saya sedang menjalankan" di halaman web.

Larutan

Sebagai aturan umum, jangan pernah percaya input yang datang dari klien. Setiap nilai GET, POST, dan cookie dapat berupa apa saja, dan karenanya harus divalidasi. Saat mengeluarkan salah satu dari nilai-nilai ini, lepas dari nilai-nilai ini sehingga tidak akan dievaluasi dengan cara yang tidak terduga.

Ingatlah bahwa bahkan dalam aplikasi yang paling sederhana sekalipun data dapat dipindahkan dan akan sulit untuk melacak semua sumber. Karena itu merupakan praktik terbaik untuk selalu keluar dari output.

PHP menyediakan beberapa cara untuk menghindari output tergantung pada konteksnya.

Fungsi Filter

Fungsi Filter PHPs memungkinkan input data ke skrip php menjadi dibersihkan atau divalidasi di banyak cara . Mereka berguna saat menyimpan atau mengeluarkan input klien.

Pengkodean HTML

htmlspecialchars akan mengonversi "karakter khusus HTML" apa pun menjadi penyandian HTML mereka, yang berarti mereka kemudian tidak diproses sebagai HTML standar. Untuk memperbaiki contoh kami sebelumnya menggunakan metode ini:

' . htmlspecialchars($_GET['input']) . '';
// or
echo '
' . filter_input(INPUT_GET, 'input', FILTER_SANITIZE_SPECIAL_CHARS) . '
';

Akan menghasilkan:

<script src="http://example.com/runme.js"></script>

Segala sesuatu di dalam tag

akan tidak ditafsirkan sebagai tag JavaScript oleh browser, tetapi sebagai simpul teks sederhana. Pengguna akan melihat:


Pengkodean URL

Saat mengeluarkan URL yang dihasilkan secara dinamis, PHP menyediakan fungsi urlencode untuk menghasilkan URL yang valid dengan aman. Jadi, misalnya, jika pengguna dapat memasukkan data yang menjadi bagian dari parameter GET lainnya:

Link';

Setiap input jahat akan dikonversi ke parameter URL yang disandikan.

Menggunakan perpustakaan eksternal khusus atau daftar AntiSamy OWASP

Terkadang Anda ingin mengirim HTML atau input kode jenis lain. Anda perlu mempertahankan daftar kata yang diotorisasi (daftar putih) dan tidak resmi (daftar hitam).

Anda dapat mengunduh daftar standar yang tersedia di situs web OWASP AntiSamy . Setiap daftar cocok untuk jenis interaksi tertentu (ebay api, tinyMCE, dll ...). Dan itu adalah open source.

Ada perpustakaan yang ada untuk menyaring HTML dan mencegah serangan XSS untuk kasus umum dan melakukan setidaknya serta daftar AntiSamy dengan penggunaan yang sangat mudah. Misalnya Anda memiliki Pemurni HTML

Cara menggunakan htmlspecialchars xss

Cross Site Scripting , atau yang lebih dikenal dengan “XSS”. Cross Site Scripting (XSS) Dilakukan oleh si penyerang dengan memasukkan kode HTML yang akan di eksekusi oleh webserver. Bug ini masuk kedalam kategori bug yang fatal, karena penyerang dapat mencuri cookies dari sebuah web. Bagaimana cara menutup celah keamanannya?, kita bisa menggunakan htmlentities(), dan htmlspecialchars(). Dibawah ini adalah salah satu simulasi dari bagaimana source code sebuah website yang rentan terhadap bug Cross Site Scripting (XSS) dan cara menutup Bug nya.

setelah selesai coding source code diatas, kita save dengan extensi .php, setelah itu langsung kita upload ke hosting. Teman teman belum memiliki hosting? langsung saja kunjungi https://host.theblackpaper.org atau chat nomor dibawah ini +6282230589068 untuk membeli hosting berkualitas dengan harga yang bersahabat. Setelah kita upload di hosting, terdapat sebuah form. Kita coba masukkan kode html untuk melihat bug Cross Site Scripting (XSS). Berikut adalah kodenya

test Bug Cross Site Scripting (XSS)

setelah kita masukkan di form tersebut, klik enter pada keyboard teman teman. Bisa dilihat, terdapat teks yang diberi garis bawah, hal ini menunjukkan bahwa website tersebut memiliki celah keamanan Cross Site Scripting (XSS). Bagaimana cara menutup kerentanannya ya?, kita gunakan htmlspecialchars() atau htmlentities(). Disini saya menggunakan htmlspecialchars() untuk mengkonversi 4 karakter khusus HTML, Diantaranya adalah <, >, & dan “, karakter yang dikonversikan ini tidak akan diproses oleh webserver dehingga tidak akan terjadi serangan Cross Site Scripting (XSS). Yuk kita ubah source codenya..

Kita ganti file sebelumnya dengan source code yang baru, masukkan kode HTML Dibawah ini di form yang ada.

test Bug Cross Site Scripting (XSS)

bisa kita lihat, kode yang kita masukkan di form yang ada tidak diproses oleh webserver. Teks yang muncul sama dengan apa yang telah kita masukkan di form, termasuk kode yang telah kita masukkan. Sekian artikel kali ini, Terima kasih