Ads (728x90)

Latest Post

Kesehatan

Tips

Sekarang, coba isikan komentar yang �sedikit aneh�. Masukkan komentar yang berisi tag HTML, misalnya sebagai berikut:



 Asslamualaikum... ini contoh teks tebal dan miring...






Apa yang terjadi? Komentar Sobat muncul seperti ini:

Asslamualaikum� ini contoh teks tebal dan miring...

Nah, kode HTML yang kita sisipkan diproses oleh browser. Coba buka halaman tersebut dari komputer lain. Maka Sobat akan memperoleh hasil yang sama. Ini berarti kita berhasil meng-inject-kan kode kita. Hal seperti ini yang disebut celah keamanan Cross-Site Scripting. Ini harusnya tidak boleh terjadi. Bayangkan jika si attacker menyisipkan kode berikut:

Asslamualaikum...

Atau komentar berikut yang sangat mengganggu pengguna lain (pengguna lain akan mendapatkan alert/popup yang tidak pernah berakhir):


Atau alert seperti ini:

Web ini bagus.

Yang mengarahkan pengguna ke halaman lain.

Cara mengatasinya cukup sederhana. Jika menggunakan PHP, tambahkan htmlentities() sebelum menampilkan hasil inputan dari pengguna. Misalnya kode berikut:

echo 'Nama : ' . $nama;

Diubah menjadi:

echo 'Nama : ' . htmlentities($nama);

Pastikan Sobat menggunakan fungsi tersebut di setiap bagian yang bertugas menampilkan hasil inputan dari pengguna.

Buat yang ingin tahu secara detail tentang XSS, simak pembahasan berikut.

Andaikan Anda membuat halaman HTML (index.html) berikut:




Demo Cross-Site Scripting


















Kemudian halaman PHP berikut (hasil.php) yang bertugas memproses hasil input dari halaman index.html:


$nama = (isset($_POST['nama']) ? $_POST['nama'] : '');
$komentar = (isset($_POST['komentar']) ? $_POST['komentar'] : '');

echo '
Nama:
' . $nama . '
';
echo '
Komentar:
' . $komentar . '
';

Saat Anda menjalankan index.html, akan muncul sebuah form dengan dua field. Jika Anda mengisi nama dengan test dan komentar dengan Asslamualaikum, maka ketika di-submit (dengan menekan tombol Kirim), hasil.php akan memprosesnya sebagai berikut:

$nama = (isset($_POST['nama']) ? $_POST['nama'] : '');
// maka $nama berisi: test

$komentar = (isset($_POST['komentar']) ? $_POST['komentar'] : '');
// dan $komentar berisi: Asslamualaikum

echo '
Nama:
' . $nama . '
';
// sesuai dengan nilai di variabel $nama di atas,
// maka akan di-echo:
Nama:
test


echo '
Komentar:
' . $komentar . '
';
// sesuai dengan nilai di variabel $komentar di atas,
// maka akan di-echo:
Komentar:
Asslamualaikum

Di sini tidak ada masalah. Jika di jalankan, maka hasil sesuai dengan yang diharapkan.

Masalah muncul ketika misalnya komentar yang dimasukkan adalah ini adalah contoh teks tebal. Halaman hasil.php akan memprosesnya sebagai berikut:

$komentar = (isset($_POST['komentar']) ? $_POST['komentar'] : '');
// $komentar berisi: ini adalah contoh teks tebal

echo '
Komentar:
' . $komentar . '
';
// sesuai dengan nilai di variabel $komentar di atas,
// maka akan di-echo:
Komentar:
ini adalah contoh teks tebal

Browser tidak pernah tau bahwa ini adalah contoh teks tebal datangnya dari web developer yang membuat halaman atau dari isian pengguna yang iseng. Hasilnya, browser akan memproses kode HTML yang ada di dalamnya, sehingga akan menampilkan tulisan �tebal� dalam keadaan bercetak tebal, hasil dari tag HTML dan tersebut.

Hal yang sama terjadi untuk JavaScript. Pengguna yang iseng bisa menyisipkan kode JavaScript yang diapit oleh tag HTML . Hasilnya tentu saja kode JavaScript tersebut akan dijalankan oleh browser.

Nah, XSS ini terjadi saat menampilkan sesuatu ke web browser. Celah keamanan sebaliknya, terjadi saat menyimpan sesuatu dari web browser (hasil input pengguna) ke database biasa dikenal dengan SQL injection. Selain kedua jenis tersebut, masih ada lagi celah keamanan yang lain, misalnya Cross-site Request Forgery (CSRF).

Code Converter :

Post a Comment