Menelusuri Permasalahan jQuery AJAX CORS (Cross-Origin Resource Sharing)

First of all, mengenai tentang CORS bisa membaca referensinya di sini, bagi yang belum mengenalnya bisa membacanya terlebih dahulu.

Cross-origin resource sharing (CORS) is a mechanism that allows many resources (e.g. fonts, JavaScript, etc.) on a web page to be requested from another domain outside the domain the resource originated from. In particular, JavaScript’s AJAX calls can use the XMLHttpRequest mechanism. Such “cross-domain” requests would otherwise be forbidden by web browsers, per the same origin security policy. CORS defines a way in which the browser and the server can interact to determine whether or not to allow the cross-origin request. It is more useful than only allowing same-origin requests, but it is more secure than simply allowing all such cross-origin requests.

Saat ini saya menghadapi suatu kasus di mana saya melakukan request POST melalui AJAX terhadap domain yang berbeda. Prosesnya seperti ini:

  1. domainsatu.com melakukan request POST menggunakan AJAX terhadap domaindua.com
  2. domaindua.com memproses request POST tersebut, lalu memberikan output atau return value terhadap domainsatu.com
  3. domainsatu.com mendapatkan output atau return value dari domaindua.com.

Continue reading Menelusuri Permasalahan jQuery AJAX CORS (Cross-Origin Resource Sharing)

Hati-hati, WordPress Bahasa Indonesia Disisipkan Kode Iseng!

Saya baru memulai membuat blog ini menggunakan WordPress beberapa bulan yang lalu. Sehingga blog saya ini masih memiliki jumlah post yang sedikit, dan tentunya belum ramai dikunjungi visitor.

Pada saat itu saya “iseng” ingin menggunakan WordPress berbahasa Indonesia. Saya pun mengunduhnya dari id.wordpress.org lalu memasangnya. Beberapa minggu kemudian halaman home blog saya ini berubah menjadi berlatar gelap, dan tertera tulisan kurang lebih “patch your system“. Intinya terkena deface!

Dalam hati “blog saya belum apa-apa ini sudah terkena deface, bahkan theme-nya pun masih default”.

Pada saat itu waktu saya sangat terbatas, sehingga tidak memiliki waktu untuk mencari tahu siapa dalang dibalik “keisengan” ini. Sementara saya hanya mengubah halaman index-nya terlebih dahulu.

Setelah saya memiliki waktu untuk mencari tahu bagaimana orang iseng ini menyelinap. Ternyata karena WordPress Bahasa Indonesia yang saya gunakan ini masalahnya! Terlihat melalui Analytics bahwa orang iseng ini melakukan login melalui backdoor code yang disisipkan pada WordPress Bahasa Indonesia ini! Terlihat pula aksi-aksi lainnya yang dilakukannya sehingga saya mengetahui darimana saja dia membuat “pintu masuk”.

Sesegera mungkin saya pun menghapus core WordPress Bahasa Indonesia yang telah terpasang pada blog saya ini, lalu menggantinya dengan yang baru, yang tentunya tanpa translet-transletan lagi. 🙂

Lalu saya pun iseng membuka Analytics lagi setelah hari ini saya selesai upgrade core WordPress. Beberapa menit kemudian terlihat bahwa orang iseng itu kembali datang untuk menyusup menggunakan URL backdoor.

[Missing Image]

Dalam hati, “Hayo lho.. mau ngapain? Sudah engga bisa yah..” 😀

Baru juga blog saya ini di update sudah mulai bermanuver lagi orang iseng ini, padahal blog ini kan masih “bersih”, tidak ada harta karunnya, hehe.

Terpampang digid.web.id pada website zone-h.org. Bahkan terindeks pula oleh Google 😀

[Missing Image]

So, bagi blogger atau siapapun yang menggunakan WordPress self-hosted ini diharapkan untuk berhati-hati mengunduh source code WordPress, karena WordPress ini bersifat open source. Mudahan-mudahan jika saat ini ada yang menggunakan WordPress Bahasa Indonesia, bisa segera melakukan langkah antisipasi jika tidak ingin mengalami nasib yang sama seperti saya, hehe.

Semoga bermanfaat! 😀

Menyisipkan Parameter Array pada in_category() – WordPress

Di tempat saya bekerja saat ini beberapa situs web dibangun menggunakan WordPress, saat ini pun saya meneruskan “warisan” programmer terdahulu yang membuat situs web ini. Lalu, saya pun menemukan kode yang menurut saya kurang efisien dalam penulisannya. Setelah saya coba pelajari ternyata programmer yang terdahulu belum memanfaatkan kemudahan penggunaan array sebagai parameter pada function in_category() WordPress.

Sebelum membahas kemudahan menggunakan parameter array pada function in_category(), sekilas menjelaskan terlebih dahulu apa yang akan saya lakukan dengan menggunakan function tersebut.

Terdapat suatu kasus dimana ada beberapa kategori menggunakan custom single page. Nah, untuk menentukan kategori n kepada single page n diarahkan oleh function in_category().

Kembali lagi ke parameter array yang diperbolehkan pada function in_category(). Saya menemukan orang lain menuliskan kode seperti ini:

<?php
if( in_category( '9' ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else if( in_category( '8' ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else if( in_category( '7' ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else if( in_category( '6' ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else if( in_category( '5' ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else if( in_category( '4' ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else if( in_category( '3' ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else if( in_category( '2' ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else if( in_category( '1' ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else {
  include(TEMPLATEPATH . '/single-custom.php');
}
?>

Contoh diatas menggunakan else if yang panjang, tanpa penggunaan array. Jika menggunakan array dapat disederhanakan menjadi seperti ini:

<?php
/* initialize */
$ids = array('9', '8', '7', '6', '5', '4', '3', '2', '1');
/* conditional */
if( in_category( $ids ) ) {
  include(TEMPLATEPATH . '/single-custom.php');
} else {
  include(TEMPLATEPATH . '/single-default.php');
}
?>

Lebih sederhanakan bukan? 😉

Optimasi Kode JavaScript menggunakan JavaScript Minifier

JavaScript Minifier terfavorit yang sering saya digunakan yaitu JavaScript Minifier. Memang masih banyak pilihan lainnya jika browsing melalui google. Akan tetapi salah satu keunggulan minifier tersebut dibandingkan dengan yang lainnya, yaitu tidak menimbulkan error ketika saya menyisipkan kode PHP didalam kode JavaScript yang akan di-minify.

Untuk melakukan un-minify, bisa menggunakan JS Beautifier. Terkadang saya suka mempelajari source code website lain, yang tentunya source code client-side, seperti JavaScript salah satunya. Dengan begitu saya bisa memperoleh pengalaman atau teknik baru dalam membangun website. Akan tetapi untuk JavaScript hampir semua source code yang tampil sudah dalam keadaan minified. Alasannya salah satunya untuk mengoptimalkan load performance suatu website. Namun akan menjadi sulit untuk dibaca jika dalam keadaan minified untuk mempelajarinya. Maka dari itu sangatlah berguna tools untuk un-minify ini bagi para newbie yang ingin belajar mempelajari source code. 😉

Links:

  1. JavaScript Minifier : http://javascript-minifier.com/
  2. JS Beautifier : http://jsbeautifier.org/