Keamanan AJAX

Asynchronous Javascript and XML (AJAX) adalah salah satu teknik terbaru yang digunakan untuk mengembangkan aplikasi web agar dapat memberikan pengalaman pengguna yang kaya. Karena ini adalah teknologi baru, ada banyak masalah keamanan yang belum diselesaikan dan di bawah ini adalah beberapa masalah keamanan di AJAX.

  • Permukaan serangan lebih banyak karena ada lebih banyak input yang harus diamankan.

  • Ini juga mengekspos fungsi internal aplikasi.

  • Kegagalan untuk melindungi informasi dan sesi otentikasi.

  • Ada garis yang sangat sempit antara sisi klien dan sisi server, oleh karena itu ada kemungkinan melakukan kesalahan keamanan.

Contoh

Berikut adalah contoh untuk AJAX Security -

Pada tahun 2006, worm menginfeksi layanan email yahoo menggunakan XSS dan AJAX yang memanfaatkan kerentanan dalam penanganan acara onload Yahoo Mail. Ketika email yang terinfeksi dibuka, worm tersebut mengeksekusi JavaScript-nya, mengirimkan salinan ke semua kontak Yahoo dari pengguna yang terinfeksi.

Tangan di atas

Step 1- Kami perlu mencoba menambahkan lebih banyak hadiah ke set hadiah yang diizinkan menggunakan injeksi XML. Di bawah ini adalah snapshot dari skenario tersebut.

Step 2- Pastikan bahwa kami mencegat permintaan dan tanggapan menggunakan Burp Suite. Pengaturannya sama seperti yang ditunjukkan di bawah ini.

Step 3- Masukkan nomor rekening seperti yang diberikan dalam skenario. Kami akan bisa mendapatkan daftar semua hadiah yang berhak kami dapatkan. Kami memenuhi syarat untuk 3 hadiah dari 5.

Step 4- Sekarang mari kita klik 'Kirim' dan lihat apa yang kita dapatkan di XML tanggapan. Seperti yang ditunjukkan di bawah ini, tiga penghargaan yang berhak kami berikan kepada kami sebagai XML.

Step 5 - Sekarang mari kita edit XML itu dan tambahkan dua hadiah lainnya juga.

Step 6- Sekarang semua hadiah akan ditampilkan kepada pengguna untuk mereka pilih. Pilih salah satu yang kami tambahkan dan klik 'Kirim'.

Step 7 - Pesan berikut muncul mengatakan, "* Selamat. Anda telah berhasil menyelesaikan pelajaran ini."

Mekanisme Pencegahan

Sisi klien -

  • Gunakan .innerText, bukan .innerHtml.
  • Jangan gunakan eval.
  • Jangan mengandalkan logika klien untuk keamanan.
  • Hindari menulis kode serialisasi.
  • Hindari membuat XML secara dinamis.
  • Jangan pernah menyebarkan rahasia kepada klien.
  • Jangan lakukan enkripsi dalam kode sisi klien.
  • Jangan melakukan logika yang memengaruhi keamanan di sisi klien.

Sisi server -

  • Gunakan perlindungan CSRF.
  • Hindari menulis kode serialisasi.
  • Layanan dapat dipanggil oleh pengguna secara langsung.
  • Hindari membuat XML dengan tangan, gunakan kerangka kerja.
  • Hindari membuat JSON dengan tangan, gunakan kerangka kerja yang sudah ada.