Terkadang kita sering lupa atau bahkan tidak memikirkan keamanan website yang kita buat. Keamanan PHP web Saat kita mulai membuat aplikasi berbasis web dengan menggunakan
PHP tentu kita akan berfokus pada cara pembuatannya, bagaimana
mengimplementasikan logika sehingga menghasilkan suatu karya sistem yang berjalan sesuai dengan keinginan dan kebutuhan kita.
Nah, dengan bahan pertimbangan yang diatas maka ada beberapa tips agar web kita sedikit aman dari serangan cracker, Apa ?? sedikit aman ?? tentu anda bertanya demikian, kenapa saya mengatakan demikian, karena seperti yang saya katakan tadi bahwa tidak ada sistem yang sempurna. Jadi yang saya berikan dibawah ini akan sangat membantu web anda untuk mendekati sistem yang sempurna.
Contoh implementasi : <input name=”_cari” maxlength=”10? />
Titik rawan : Input Login (username dan password), Input search
Contoh implementasi : addslashes($_POST['_username'])
Titik rawan : Form Login
Contoh implementasi : htmlspecialchars($_POST['pesan'])
Titik rawan : Form Login, Form Kontak Admin
Contoh implementasi : <input name=”_username” />
Titik rawan : Input Login (username dan password)
Selamat menerapkannya pada website atau blog kita masing-masing.
Tapi ada kalanya kita
perlu membalik pola pikir tersebut dengan memandang sebagai seorang user
(pengguna aplikasi) yang mungkin memiliki waktu lebih banyak dalam
penggunaan aplikasi tersebut. Dalam hal ini banyak hal yang mungkin
tidak kita perhatikan dari aplikasi buatan kita tersebut oleh karena itu
ada pepatah “Tidak ada sistem yang sempurna.” tetapi penulis akan
memberikan sedikit informasi keamanan dasar sehingga kita bisa sedikit
melangkah menuju kesempurnaan tersebut.
Beberapa hal yang perlu diperhatikan dalam langkah percobaan para cracker untuk memboikot akses website kita antara lain :
1. Melalui URL (method GET)
2. Melalui media input yang terdapat dalam form (method POST)
Seperti yang kita bahas sebelumnya bahwa terdapat 2 cara umum pengiriman variable dalam PHP yaitu GET dan
POST sehingga perlu penanganan khusus dalam penerimaan serta pengiriman
variable tersebut.
Untuk method POST :
Method POST ini sering dugunakan untuk menangkap variable dari media input yang terdapat dalam FORM.
Nah, dengan bahan pertimbangan yang diatas maka ada beberapa tips agar web kita sedikit aman dari serangan cracker, Apa ?? sedikit aman ?? tentu anda bertanya demikian, kenapa saya mengatakan demikian, karena seperti yang saya katakan tadi bahwa tidak ada sistem yang sempurna. Jadi yang saya berikan dibawah ini akan sangat membantu web anda untuk mendekati sistem yang sempurna.
1. Batasi jumlah karakter (maxlength)
Pembatasan
jumlah karakter dalam media input sangat penting sehingga tidak
dimungkinkan penulisan script seperti javascript pada inputbox tersebut.
Contoh implementasi : <input name=”_cari” maxlength=”10? />
Titik rawan : Input Login (username dan password), Input search
2. Lapisi dengan penahan kutip atau addslashes()
Fungsi
PHP ini akan membantu kita menambahkan tanda kutip (‘) pada setiap
karakter garing (/) sehingga dapat mencegah timbulnya efek SQL
injection. Saya rasa teknik hacking ini cukup populer diantara anda.
Penambahan kutip akan membuat garing menjadi bertipe string sehingga
tidak dianggap sebagai salah satu perintah query pada MySQL / SQL.
Contoh implementasi : addslashes($_POST['_username'])
Titik rawan : Form Login
3. Lapisi dengan penahan tag atau htmlspecialchars()
Untuk
mencegah terjadinya teknik hacking xss atau javascript injection maka
ada baiknya kita menambahkan fungsi tersebut. Hal ini akan membuat tag
html maupun javascript memiliki tipe data string sehingga tidak akan
dieksekusi oleh browser.
Apabila
script dimungkinkan dalam media input sehingga masuk ke dalam database
dan saat browser membuka halaman yang terkontaminasi tersebut maka
browser akan melakukan eksekusi terhadap perintah tersebut yang biasanya
dalam bentuk javascript.
Contoh implementasi : htmlspecialchars($_POST['pesan'])
Titik rawan : Form Login, Form Kontak Admin
4. Perhatikan nama media input Web anda
Sudah
saatnya kita berusaha sedikit lebih unik dalam menentukan nama pada
media input kita sehingga mempersulit beberapa tools penjahat yang
menggunakan library (kamus kata) dalam penentuan nama variable
incarannya. Misalnya pada media input login tambahkan garis bawah. Tentu
anda memiliki ide sendiri dalam mengimplementasikan hal ini.
Contoh implementasi : <input name=”_username” />
Titik rawan : Input Login (username dan password)
Untuk method GET :
Method get merupakan penangkapan variable yang berasal dari URL.
1. Gunakan .htaccess
Sebenarnya ini adalah sebuah metode yang menjadikan website kita seakan memiliki struktur direktori yang luas, padahal itu adalah variable. Sehingga memecah konsentrasi dari pengunjung yang berniat isenk. Bila halaman tidak ditemukan maka kita dapat meredirectnya ke halaman 404 kesayangan kita.
Implementasi :
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [L]
</IfModule>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^mydomain.com$ [NC]
RewriteRule ^(.*) http://www.mydomain.com/$1 [L,R=301]
2. Hindari $_REQUEST()
Metode
ini digunakan untuk menangkap variable dalam bentuk POST dan GET. Ada
kalanya kita membutuhkan metode penerimaan variable dengan menggunakan
fungsi ini, tetapi batasilah penggunaannya karena tanpa disadari suatu
saat anda akan mendapatkan masalah karena hal ini. Dan bila kita telah
terlanjur menggunakannya pada seluruh aplikasi kita maka kita akan sulit
untuk merubah (Bisa, dengan memilah mana yang tidak perlu dan
benar-benar menggunakan.).
Tambahan :
1. Session dan Cookies timeout
Gunakan
timeout pada session atau cookies terutama untuk pengenalan login.
Session merupakan penanda dari sisi server dan akan hilang apabila
browser ditutup, sedangkan cookies adalah pengenalan dari sisi browser
dan bila tidak diset timeout maka status akan terus login (pada
pengenalan login.), tentu saja anda tau kemungkinan-kemungkinan yang
akan terjadi selanjutnya.
Apakah website seperti blogspot yang di kelola google aman mas ?
BalasHapus@Yogie Share:kalau masalah blogspot ,, tingkat keamanannya tergantung seberapa aman email yang anda gunakan dalam membuat blogspot tersebut,
BalasHapusmisalnya dengan menggunakan kata sandi blog yang rumit, yaitu perpaduan angka dan huruf atau memasukkan email alternatif,,
intinya ada pada email yang anda gunakan dalam membuat blogspot.
Terima kasih, Mas. Sangat bermanfaat buat saya. Saya mau tanya, apa ada software yang bisa meningkatkan keamanan website ?
BalasHapusOh iya, sekalian minta izin buat saya submit artikelnya di Social Bookmark :)
terimakasih atas infonya
BalasHapussolder hp
Terimakasih tipsnya ya, sangat bermanfaat
BalasHapus