Tolong pilih kategori sesuai, jenis posting (pertanyaan atau bukan) dan sertakan tag/topik yang sesuai misal komputer, php, mysql, dll.
Promosi atau posting tidak pada tempatnya akan kami hapus.
Mencantumkan kode program di posting Anda, tolong ikuti aturan yang sesuai, baca http://diskusiweb.com/discussion/39204/aturan-cara-menyisipkan-kode-program-di-diskusiweb

Baca cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

Apa itu XSS dan Cara Mengatasinya

edited September 2011 in Artikel & Tutorial Komputer
<b>Apa itu XSS</b>
XSS merupakan kependekan yang digunakan untuk istilah cross site scripting.

XSS merupakan salah satu jenis serangan injeksi code (code injection attack). XSS dilakukan oleh penyerang dengan cara memasukkan kode HTML atau client script code lainnya ke suatu situs. Serangan ini akan seolah-olah datang dari situs tersebut. Akibat serangan ini antara lain penyerang dapat mem-bypass keamanan di sisi klien, mendapatkan informasi sensitif, atau menyimpan aplikasi berbahaya.

<i>Dikutip dari <a href="http://id.wikipedia.org/wiki/XSS">Wikipedia</a></i>;

<b>Cara XSS</b>
<font color="red"><i><b>Disini saya hanya menerangkan tempat dimana XSS dapat dilakukan</b></i></font>

XSS yang paling banyak digunakan adalah jenis GET dan POST.
Salah satu contoh yang akan dibahas adalah jenis GET.

Lihat gambar dibawah ini :
<img src="http://i51.tinypic.com/r9euyh.png"/>;
Masukkan script alert sederhana ini pada URL yang mempunyai request GET<div class='geshi_syntax'><table><tr><td><div class='code'><pre class="php">http<span class="sy0">:</span><span class="co1">//localhost/Momonimo/search?search_key=<script>alert('XSS TRUE')</script></span></pre></div></td></tr></table></div>
Jika halaman tersebut (yang mempunyai database) dapat melakukan XSS, maka akan tampil alert seperti gambar sebagai berikut :
<img src="http://i51.tinypic.com/290ud4z.png"/>;


<b>Mengatasi XSS</b>
PHP sangat handal dalam melakukan konversi string dengan cepat. Tetapi jenis apa yang akan anda lakukan jika hal diatas terjadi?

Saya melakukan survey terhadap teman-teman programmer.
Tidak sedikit yang menjawab <i><b>"Pakai saja htmlentities() atau strip_tags()"</i></b>

<b>htmlentities()</b> memang dapat melakukan konversi tag-tag HTML, tetapi bagaimana dengan Javascript?

<b>strip_tags()</b> memang dapat melakukan konversi tag-tag HTML dan PHP dengan NULL byte, tetapi bagaimana dengan Javascript?

<i>Lalu apa yang harus dilakukan?</i>
Saya memakai <b>filter_var()</b> dengan tipe filter <b>Sanitize</b>
Caranya sebagai berikut :<div class='geshi_syntax'><table><tr><td><div class='code'><pre class="php"><span class="kw3">filter_var</span><span class="br0">(</span><span class="re0">$val</span><span class="sy0">,</span> FILTER_SANITIZE_STRING<span class="br0">)</span><span class="sy0">;</span></pre></div></td></tr></table></div>
Dan hasilnya adalah :
<img src="http://i55.tinypic.com/b4ux6v.png"/>;

Berikut adalah Fungsi untuk keseluruhannya :<div class='geshi_syntax'><table><tr><td><div class='code'><pre class="php"><span class="kw2">function</span> xss_filter<span class="br0">(</span><span class="re0">$val</span><span class="br0">)</span> <span class="br0">{</span>
<span class="re0">$val</span> <span class="sy0">=</span> <span class="kw3">htmlentities</span><span class="br0">(</span><span class="re0">$val</span><span class="br0">)</span><span class="sy0">;</span>
<span class="re0">$val</span> <span class="sy0">=</span> <span class="kw3">strip_tags</span><span class="br0">(</span><span class="re0">$val</span><span class="br0">)</span><span class="sy0">;</span>
<span class="re0">$val</span> <span class="sy0">=</span> <span class="kw3">filter_var</span><span class="br0">(</span><span class="re0">$val</span><span class="sy0">,</span> FILTER_SANITIZE_STRING<span class="br0">)</span><span class="sy0">;</span>
 
<span class="kw1">return</span> <span class="re0">$val</span><span class="sy0">;</span>
<span class="br0">}</span></pre></div></td></tr></table></div>

Saya membuat Fungsi diatas (dengan menambahkan htmlentities dan strip_tags) agar XSS key yang digunakan dapat terbaca semua. Semata-mata hanya ingin membuat rasa penasaran para hacker :)

Dan hasilnya seperti berikut :
<img src="http://i52.tinypic.com/flj3gy.png"/>;

<b>Note</b>
Script diatas semata-mata hanya ingin membantu pembaca lainnya untuk mengeksplorasi PHP lebih dalam saja.
Banyak hal yang dapat dilakukan untuk merusak aplikasi yang telah kita buat dan tentunya bukan hanya XSS saja. Karena tidak ada yang tidak mungkin dalam dunia ini.

Tanggapan

  • Bagaimana dg htmlentities($val, ENT_QUOTES) ? Kayaknya mirip dg function xss_filter() di atas?
  • trims infonya,, :)
  • wao , , nice post gan
  • edited May 2013
    Nice info gan...  sangat membantu. Thanks
  • Mantappp gan, ane jadi tau lagi
  • browser skrg dah mengantisipasi teknik ini
  • Tambah ilmu
  • Sebagai Info, XSS itu ada 3 macam, DOM, Reflected dan Stored Type
    XSS sendiri dapat dicegah menggunakan beberapa cara seperti salah satunya menggunakan filtering inputan dari user sebelum di kirim GET atau POST. Untuk lebih mudahnya bisa menggunakan Web Application Firewall salah satunya OWASP ModSecurity CRS ( Open Source )
Sign In or Register to comment.