Mohon maaf sebelumnya lama sekali saya tidak menulis diblog ini, terutama yang berkaitan dengan codingan. Kali ini saya akan coba menulis artikel lagi yang berkaitan dengan hal tersebut terutama bagian sistem keamanannya, yaitu tentang cara agar website tidak mudah dihack.

Bicara soal sebuah sistem aplikasi memang tidak ada yang sepenuhnya aman “no system is safe” tapi bisa kita minimalisir kemungkinan-kemungkinan akan terjadinya pembajakan sistem.

Baik langsung saja kita bahas tentang cara agar website tidak mudah dihack.

1. Jangan gunakan username dan password umum

adminadmin

Kebiasaan seorang developer dalam mengembangkan aplikasi adalah menggunakan username dan password umum, seperti.

username: admin
password: admin

username: admin
password: root

Memang ini memudahkan dalam hal pengembangan, kita jadi lebih cepat untuk login dan menghafal banyak akses login sekaligus, namun ini sangat rentang untuk dihack orang tidak bertanggung jawab.

Karena ada teknik namanya brute force untuk mencari kombinasi username dan password yang benar, jika username dan password anda bersifat umum maka akan dengan sangat mudah ditemukan.

Intinya jangan gunakan kata admin atau root baik untuk username ataupun password. Sebagai gantinya gunakan kombinasi username dan password yang kuat, terutama saat aplikasi sudah anda lounching.

2. Sembunyikan halaman login admin

superadmin

Halaman login mungkin bisa banyak, ada login untuk super admin dan ada login untuk user biasa, kalau login untuk user biasa tentu jangan disembunyikan karena itu untuk user anda.

Yang perlu anda sembunyikan adalah halaman login super admin. Dimana login ini khusus hanya untuk administrator website. Untuk login jenis ini jangan gunakan url umum, seperti

https://example.com/login
https://example.com/admin 
https://example.com/administrator 

Sebagai solsuinya bisa anda gunakan url yang tidak umum, seperti

https://example.com/melbu
https://example.com/assalmualaikum
https://example.com/toktok

Dan halaman login admin ini kasih meta nonindex agar mesin pencari tidak bisa mengindex halaman login admin anda. Tutorial memberi meta nonindex pada halaman website banyak tersedia di Google.

Karena hacker mencari halaman login sebuah website biasanya menggunakan google dork, jika mereka gagal menggunakan halaman login umum seperti yang saya contohkan diatas.

Ini sering terjadi sesorang hacker sudah mengantongi username dan password namun tidak tahu halaman loginnya dimana :v, jadi sangat penting menyembunyikan halaman login admin.

3. Gunakan captcha pada formulir

Pernah lihat gambar diatas pas lagi browsing? itu adalah captcha untuk memverifikasi bahwa anda bukan robot.

Captcha digunakan untuk menangani program-program robot yang sering meresahkan, contoh program robot adalah spam komentar.

Namun dalam kasus yang lebih komplek robot-robot ini bisa digunakan untuk mengirim request secara besar-besarakan kesebuah situs dengan tujuan tertentu.

Contoh reqest untuk login, kalau manusia gak mungkin melakukan acak password satu per satu sampai menemukan password yang benar. Namun jika dilakukan oleh robot ini sangat mungkin dan sangat cepat. Jika anda tidak ingin ini terjadi maka anda wajib memasang captcha diform-form yang menurut anda sangat krusial untuk menghindari serangan spamer.

Captcha akan berekerja jika menemukan trafik mencurigakan dan akan langsung mengeluarkan gambar-gambar yang mengharuskan pengguna melakukan konfirmasi dulu sebelum submit, jika mereka benar-benar manusia bukan robot. Kalau robot maka proses akan terhambat karena robot akan kesusahan menerjemahkan kode captcha.

Banyak fitur captcha tersedia gratis, salah satunya adalah Captcha Google.

4. Validasi inputan pada formulir

xss

Sebuah aplikasi yang dinamis pasti tidak lepas dari yang namanya formulir dan sebuah formulir pasti memiliki beberapa inputan.

Inputan inilah yang harus divalidasi, gunanya adalah untuk memfilter apa saja yang boleh dimasukan ke sistem.

Contoh, saya punya formulir untuk komentar, tentu saya tidak akan mengizinkan orang untuk memasukan bahasa html, css, php, javascript dan sejenisnya pada formulir tersebut.

Kalau saya izinkan maka orang bisa mengacak-ngacak sistem saya baik hanya berupa tampilan maupun proses bisnisnya dengan memasukan kode-kode jahat.

Kode jahat terlahir dari kode baik yang disalahgunakan.

Solusinya adalah gunakan function dibawah ini.

htmlspecialchars($variabelInputan);
html_escape($variabelInputan, TRUE);

Catatan: function diatas dalam bahasa php, kalau dalam bahasa lain ada sendiri sintaxnya namun inti kegunaannya sama.

5. Filter SQL Injection

SQL-INJECTION

Tehnik SQL Injection ini sudah lama ada namun hingga saat ini masih ramai serangan jenis ini. Secara umum SQL Injection adalah menyuntikan bahasa SQL (database) dari tempat yang tidak semestinya.

Hampir sama dengan poin 4, namun kalau poin 4 mainnya di query INSERT sedangkan SQL Injection mainnya di query SELECT. ini biasanya melalui halaman login, halaman detail dan halaman pencarian.

Contoh anda buat query seperti ini

$username = 'rizki';
$password = 'qwerty12345';

SELECT * FROM admin WHERE username='rizki' AND password='qwerty12345' LIMIT 1

Jika variabel $username dan $password tidak anda filter maka QUERY itu bisa diinject dengan cara memodifikasi query tersebut melalui variabel, jadi seperti ini

$username = " or ""=";
$password = " or ""=";

SELECT * FROM admin WHERE username=" or ""=" AND password=" or ""=" LIMIT 1

Apa yang terjadi jika terjadi seperti diatas? bypass login! iya, yang terjadi adalah hacker bisa masuk ke sistem tanpa harus mengetahui username dan password anda. Karena query tersebut (yang sudah di inject) akan selalu menghasilkan nilai TRUE/benar.

Kenapa bisa terjadi? karena anda tidak memfilter variabel $username dan $password. Jika tidak anda filter maka apapun karakter yang dimasukan oleh pengguna aplikasi anda akan ditelan mentah-mentah oleh sistem.

Solusinya adalah menggunakan function untuk memfilter variabel, hanya bolehkan string saja menggunakan function dibawah

$username = filter_var($username, FILTER_SANITIZE_STRING);
$password = filter_var($password, FILTER_SANITIZE_STRING); 

Function diatas hanya akan menerima inputan berupa huruf dan angka saja, jika ada inputan ‘ = / ! @ dan sejenisnya akan langsung di encode jadi kode2 string, sehingga sistem akan tetep berjalan sesuai koridor yaitu menerima string saja dan karakter-karakter pendukung SQL Injection tidak akan dijalankan.

6. Gunakan Framework

Jika anda mau mengembangkan sebuah aplikasi ada baiknya anda menggunakan framework karena framework sudah menerapkan sistem-sistem keamanan yang tentu akan lebih menghemat waktu anda.

Baca juga: Cara Instal CodeIgniter di Xampp

Namun perlu anda catat meski anda sudah menggunakan framework bukan berarti anda terlepas dari tanggung jawab keamanan. Framework hanya mengamankan sebagian dan menyediakan beberapa function terakait security untuk anda gunakan sesuai kebutuhkan.


Kesimpulan Cara agar Website Tidak Mudah Dihack

Sebuah aplikasi pasti melakukan interaksi antara pengguna dan server, yang perlu diperhatikan adalah setiap interaksi yang dilakukan pengguna kepada server harus dijaga agar tidak disalahgunakan oleh orang yang tidak bertanggung jawab.

Cara yang saya bahas terkait Cara agar Website Tidak Mudah Dihack adalah cara yang terbilang standar untuk mengamankan sebuah website dari hacker-hacker yang tersebar digrup-grup facebook, telegram dan sejenisnya.

Funtion-function yang saya berikan bisa anda rubah sesuai kebutuhan anda, karena algoritma setiap orang berbeda-beda.


Komentar