Salah satu teknik dalam secure coding, yaitu membersihkan input dan output oleh sistem yang kita bangun. Untuk melakukan proses secure coding sendiri tentulah tidak terlalu mudah, namun kali ini akan kita share Secure Coding Sederhana di PHP.
Tujuan
Sebenarnya tujuan dari secure coding ini adalah memfilter apa saja yang bisa di inputkan oleh user dan memfilter apa saja yang di proses lalu mau ditampilkan seperti apa jika terlanjur diisikan inputan. Garis depan dari secure coding adalah validasi di Form. Kalau misalkan formnya masih bisa diisi bebas, hendaklah kita melimit atau mengatur rule apa saja yang bisa diinputkan. Sehingga tujuan dari yang kita harapkan dalam proses bisnis bisa tercapai.
Konsep
Secure Coding sebetulnya terbagi kedalam tiga bagian jika di lihat dari proses yaitu input, proses dan output. Dari segi input biasanya ini yang menjadi awal dari secure coding, mulai dari validasi sederhana seperti isian password kenapa harus dimasking. Masking itu adalah mengganti semua karakter dengan karakter tertentu seperti bintang atau titik. Kemudian membatasi input seperti password, biasanya password jangan kurang dari 6 karakter. Iya itu pun sudah masuk ke tahapan secure coding.
Dengan melakukan tahapan tersebut, diharapkan penyalahgunaan akun tersebut akan lebih sulit ditebak atau istilahnya menggunakan teknik bruteforce. Selain itu juga, ada validasi kustom yang kita harus buat. seperti nomor hp, pada dasarnya nomor hp harus di validasi dengan mengirimkan kode melalui SMS atau telp, tapi ini kan sebetulnya ribet. Memang seperti inilah security “Less Secure More Comfort” dan juga sebaliknya.
Secure Coding di Level Proses
Pada level proses apakah ada secure coding? tentu saja ada. Di level ini biasanya sangat jarang programmer membuat sendiri, biasanya sudah ada didalam framework atau CMS yang digunakan. Kecuali kalau programmer itu memang sangat idealis atau tidak percaya terhadap frameworknya atau ternyata sudah kena hack biasanya baru dilakukan. hehehe.
Pada level proses, secure coding tugasnya bukan hanya untuk mencegah inputan yang diisi oleh user, tapi menjaga juga supaya menjaga dari proses yang tidak perlu. Contoh, misalkan saya memasukan email tapi saya malah isikan nomor hp. Tentu saja hal ini tidak boleh diproses, karena selain melakukan hal yang tidak perlu, juga telah ikut memangkas kinerja prosesor meskipun tidak terasa signifikan.
Secure Coding di Level Output
Suatu sistem pasti akan memiliki output, baik hanya sebagai tampilan maupun hanya sebagai file yang disimpan didalam hardisk. Biasanya output ini akan sangat berguna sekali. Contoh: Kita akan mengkompresi file menjadi ZIP.. Tapi file zip nya pas di ekstrak corrupt. Fungsi dari secure coding ini adalah memastikan bahwa ada proses recovery, baik itu secara manual maupun otomatis.
Contoh Kode PHP
Ini dia yang ditunggu-tunggu, bagaimana contoh kodenya? baik kali ini akan saya share sedikit secure coding untuk inputan dari passing parameter GET dan POST di PHP.
function sanitizer($input) { $input = mysql_real_escape_string($input); $input = htmlspecialchars($input, ENT_IGNORE, 'utf-8'); $input = strip_tags($input); $input = stripslashes($input); return $input; }
cobalah kode itu setelah fungsi GET. Berikut adalah contohnya
if(isset($_GET['nama'])){ //secure coding memastikan variabel dari inputan ada if(!empty($_GET['nama'])){ //secure coding level proses, tidak usah proses jika inputan kosong echo sanitizer($_GET['nama']); //secure coding level output, memastikan tidak ada inputan jahat } }
Bagaimana mudah bukan? hehehe.
Kesimpulan
Sebetulnya kode itu jangan sampai digunakan untuk level production, karena sebetulnya ada input jahat juga yang diinginkan untuk masuk. Contoh, ketika kita akan menyisipkan file javascript ke dalam database, tidak semua script itu jahat bukan. Bukan hanya script JS juga, namun inputan lainya.
Memilih Metode Sanitizer yang Tepat
Berikut ini adalah beberapa fungsi yang digunakan untuk menangkal inputan jahat:
- htmlspecialchars() untuk HTML
- preg_quote() untuk membersihkan dengan kondisi terntentu menggunakan regular expression
- escapeshellarg() / escapeshellcmd() digunakan untuk akses ke CMD
Demikian. Mudah-mudahan bisa membantu.