Pengamanan Data pada Aplikasi Web

10 kelemahan security teratas pada aplikasi web
- Masukan (input) yang tidak tervalidasi
- Broken Access Control
- Pengelolaan Autentikasi dan Session yang tidak baik
- Cross site scripting
- Buffer overflows
- Injections flaws
- Penyimpanan yang tidak aman
- Denial of Service
- Pengelolaan konfigurasi yang tidak aman

1.Input yang tidak divalidasi

Aplikasi web menerima data dari HTTP request yang dimasukkan oleh user
Hacker dapat memanipulasi request untuk menyerang keamanan situs

Hal – hal yang harus diperhatikan ketika mengelola validasi
Tidak cukup hanya bergantung pada script client side yang biasa digunakan untuk mencegah masukan form ketika ada input yang invalid
Penggunaan kode validasi untuk memeriksa masukan tidak mencukupi

2. Broken Access Control

Pada aplikasi yang membedakan akses dengan menggunakan perbedaan ID, hanya menggunakan satu halaman untuk memeriksa user
Jika user berhasil melewati halaman login, maka dia bebas melakukan apa saja
Permasalahan lain
- ID yang tidak aman
- ID bisa ditebak
- Ijin file
- File yang berisi daftar user bisa dibaca orang lain

3. Pengelolaan Autentikasi dan Session yang tidak baik

Beberapa hal yang harus diperhatikan:
- Password strength
- Penggunaan password
- Penyimpanan password
- Session ID Protection

4. Buffer Overflows
Pengiriman request yang dapat membuat  server menjalankan kode kode yang tidak  biasa

5. Injection Flaws
Penyerang mengirimkan “inject” calls ke OS atau resource lain, seperti database
Salah satu yang terkenal adalah SQL Injection

Keamanan server juga menjadi hal penting dalam hal keamanan aplikasi web

Berikut adalah beberapa kesalahan konfigurasi  pada server :
- Lubang keamanan yang tidak ditambal  (patched)
- Ijin file dan direktori yang tidak baik
- Account default dengan password default

Langkah-langkah untuk menaikkan tingkat keamanan browser
- Selalu mengupdate web browser menggunakan patch terbaru
- Mencegah virus
- Menggunakan situs yang aman untuk transaksi finansial dan sensitif
- Menggunakan secure proxy
- Mengamankan lingkungan jaringan
- Tidak menggunakan informasi pribadi
- Hati-hati ketika merubah setting browser

General Recommendations
- Hati-hati ketika merubah konfigurasi browser
- Jangan membuat konfigurasi yang mendukung scripts dan macros
- Jangan langsung menjalankan program yang anda download dari internet
- Browsing ke situs-situs yang aman
    *)Mengurangi kemungkinan adanya malcode dan spyware
- Konfigurasi home pae harus hati-hati
    *)Lebih baik gunakan blank
- Jangan mempercayai setiap links (periksa dulu arah tujuan link itu)
- Jangan selalu mengikuti link yang diberitahukan lewat e-mail
- Jangan browsing dari sistem yang mengandung data sensitif
- Lindungi informasi anda kalau bisa jangan gunakan informasi pribadi pada web
- Gunakan stronger encryption
     *)Pilih 128-bit encryption
- Gunakan browser yang jarang digunakan
     *)Serangan banyak dilakukan pada web browser yang populer
- Minimalkan penggunaan plugins
- Minimalkan penggunaan cookies
- Perhatikan cara penanganan dan lokasi penyimpanan temporary files

Enkripsi di PHP untuk Mengamankan Data
Enkripsi adalah teknik untuk mengamankan data agar isinya tidak diketahui orang lain
1. Fungsi password_hash()
Fungsi ini akan menghasilkan sebuah kode hash baru dengan metode one-way hashing. one-way hashing artinya hasil enkripsinya tidak bisa dikembalikan seperti semula (decrypt/decode).

Contoh:
<?php echo password_hash("PetaniKode", PASSWORD_DEFAULT); ?>

Hasilnya:
$2y$10$7PZGQcOAK6ZJXCAO3UFRC.hpv8hjKsQhy5Y7xBOhLNoFNTuxF3lr2

- Fungsi ini sangat disarankan untuk mengenkripsi password, karena sulit didekripsi atau di-crack.

Fungsi passowrd_hash() ini tidak bisa bekerja sendirian, dia memiliki teman bernama password_verify()

Fungsi password_verify(), biasanya digunakaan saat membuat login untuk membandingkan password yang dikirim user dengan password yang tersimpan pada database
Tips: bila ingin menyimpan hasil dari fungsi password_hash() di database, pastikan bertipe VARCHAR dengan panjang 255 karakter

2. Fungsi crypt()
Fungsi ini menghasilkan kode hash dengan menggunakan algoritma DES, Blowfish, dan MD5
Contoh:
<?php echo crypt("petanikode", "garam");
?>

Hasilnya:
gabeK4a28MgJs

Pada contoh diatas kita memberikan dua parameter kepada fungsinya.
Parameter pertama adalah teks yang akan dienkripsi.
Parameter kedua adalah salt (garam).
Garam adalah sebuah data acak yang dimasukkan ke dalam fungsi enkripsi.
Fungsi ini juga dapat digunakan untuk mengamankan password, karena sulit di-decode.

3. Fungsi md5()
Fungsi ini akan menghasilkan kode hash sepanjang 32 karakter
Contoh:
<?php
echo md5("petanikode");
?>

Hasilnya:
37ebda33c177743169404948552319df

Bila ditambahkan garam hasilnya
<?php echo md5("petanikode", "g4r4m"); ?>

Output: 7��3�wt1i@IHU#�

Fungsi ini juga dapat digunakan untuk mengamankan password.
Akan tetapi, kalau kita perhatikan kecepatan komputer zaman sekarang, sangat mungkin untuk melakukan decrypt

4. Fungsi hash()
Fungsi ini akan menciptkan sebuah kode hash dengan algoritma tertentu
Contoh:
<?php echo hash("md5", "petanikode"); ?>

Hasilnya:
37ebda33c177743169404948552319df

Bila ingin mengetahui nama-nama algoritma yang bisa digunakan, eksekusi code berikut:

<?php
$data = "hello";
foreach (hash_algos() as $v) {
$r = hash($v, $data, false); printf("%-12s %3d %s\n", $v, strlen($r), $r);
}
?>

5. Fungsi sha1()
Fungsi ini akan menghasilkan kode hash sepanjang 40 karakter. Mirip seperti fungsi md5()
Contoh:
<?php
echo sha1("petanikode");
?>

Hasilnya:
2e71f75dee7cb3e4b8e2e6ef8b8b5e0eab8f78a2

Bila ditambahkan garam hasilnya
<?php echo sha1("petanikode", "ga12am"); ?>

Output: .q�]�|�����^��

6. Fungsi base64_encode()
Fungsi ini akan menghasilkan kode hash dari teks yang diinputkan dan bisa dikembalikan ke bentuk semula dengan fungsi base64_decode(). Metode ini disebut two-way hasing

Contoh:
<?php echo base64_encode("Petani kode");
?>

Hasilnya:
UGV0YW5pIGtvZGU=

Sementara itu, untuk mengembalikan (decrypt) atau decode dapat menggunakan fungsi base64_decode()

Contoh:
<?php
Echo base64_decode("UGV0YW5pIGtvZGU=");
?>

Output: Petani kode

VALIDASI FORM DENGAN PHP
Validasi form adalah proses pengecekan cara pengisian form sebelum form kita submit, bertujuan agar data yang terkumpul lebih valid

Komentar

Postingan populer dari blog ini

SISTEM KOMPUTER KELAS XI

Ketergantungan fungsional