Sabtu, 13 Agustus 2022

MATERI PWPB XIIRPL_3

Kompetensi Dasar:

3.20     Mengevaluasi pengamanan data pada aplikasi web

4.20   Merevisi pengamanan data pada aplikasi web

PENGAMANAN DATA PADA APLIKASI WEB

Membangun sistem keamanan website cukup penting dilakukan agar meminimalkan resiko serangan terhadap server atau bahkan dapat dicegah. Faktor yang perlu diperhatikan dalam mencegah serangan serangan melalui web diantaranya perangkat keras, system operasi, aplikasi berbasis web, dan fisik tempat penyimpanan server. Hal ini dapat mencegah adanya cyberchrime(kejahatan dunia maya) seperti pencurian data atau informasi dari server data melalui aplikasi berbasis web. Contoh pencurian username dan password, nomor kartu kredit, atau perusakan database server dengan serangan Denial of Service.

Pengamanan pada aplikasi web merupakan hal mutlak yang harus diperhatikan dalam pembuatan aplikasi. Menurut Open Web Application Security Project(OWASP) ada beberapa celah keamanan aplikasi web dan rekomendasi penanganannya seperti injection, referensi objek secara langsung yang tidak aman, kerusakan manajemen autentikasidan sesi, Cross Site Scripting(XSS), pembeberan data sensitive, hilangnya fungsi level access control, penyimpanan yang tidak aman, manajemen konfigurasi yang tidak aman, dan tidak tervalidasinya proses redirect dan forwards.

Kriptografi  merupakan ilmu dan seni penyimpanan pesan, data, atau informasi secara aman. Criptoanalysis adalah aksi untuk memecahkan mekanisme kriptografi dengan cara mendapatkan plaintext atau kunci dari chipertext.

6 Fungsi Enkripsi di PHP untuk Mengamankan Data

Enkripsi adalah teknik untuk mengamankan data-data tersebut agar isinya tidak diketahui orang lain. Enkripsi biasanya dilakukan terhadap data -data sensitif seperti password.

1. Fungsi password_hash()

Fungsi  password_hash() ini  akan  menghasilkan  sebuah  kode hash baru  dengan  metode one-way hashing. one-way hasing artinya, hasil enkripsinya tidak bisa dikembalikan seperti semula (decrypt/decode). Fungsi ini sangat disarankan untuk mengenkripsi password, karena sulit didekripsi atau di-crack.

Contoh penggunaan:

Sebelum menyimpan password ke database, sebaiknya dienkripsi terlebih dahulu:

<?php

$username = $_POST['username'];

// enkripsi dulu...

$password = password_hash($_POST['username'], PASSWORD_DEFAULT);

// query simpan

mysqli_query("INSERT INTO user (username, password) VALUE ('$username','$password')");

?>

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.

Contoh:

<?php

// ambil data dari form login

 $username = $_POST['username']; //<-- ini belum aman dari sql injection :D

// ambil data dari database

$query = mysqli_query("SELECT * FROM user WHERE username='$username'");

$user = mysqli_fetch_assoc($query);

// bandingkan password yang dikirim dari form login dengan password

// yang ada di database

if( password_verify($_POST['password'], $user['password']) ) {

// login berhasil

} else {

// login gagal

}

?>

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

Bila diperhatikan, susuan karakter yang dihasilkan mirip seperti karakter yang digunakan pada alamat URL video youtube.Mungkin saja youtube juga menggunakan algoritma yang sama dengan fungsi ini. Pada contoh diatas, diberikan dua parameter kepada fungsinya. Parameter pertama adalah teks yang akan dienkripsi. Sementara, parameter   kedua   adalah salt (garam).   Garam adalah   sebuah   data   acak   yang dimasukkan ke dalam fungsi enkripsi.

Fungsi ini juga dapat digunakan untuk mengamankan password, karen a sulit di- decode.

3. Fungsi md5()

Fungsi ini akan menghasilkan kode hash sepanjang 32 karakter.

<?php echo md5("petanikode"); ?> Hasilnya:

37ebda33c177743169404948552319df

Bila ditambahkan garam, hasilnya akan berubah. Contoh:

<?php echo md5("petanikode", "g4r4m"); ?> Hasilnya: 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

Pada contoh di atas, parameter "md5" adalah nama algortima yang akan digunakan untuk mengenkripsi. Parameter "petanikode" adalah teks yang akan dienkripsi.

Bila ingin mengetahui nama-nama algoritma yang bisa digunakan, silahkan coba eksekusi kode ini:

<?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

Seperti halnya fungsi md5(), fungsi ini juga akan menciptakan karakter aneh, bila ditambahkan garam.

Contoh:

<?php echo sha1("petanikode", "ga12am"); ?> Hasilnya: .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="); ?> Hasilnya: Petani kode

Enkripsi dengan base64 tidak cocok digunakan untuk mengenkripsi password, karena sangat mudah di-decode.

Dari keenam fungsi enkripsi di PHP untuk mengamankan data di atas setiap fungsi memiliki   algoritmanya   masing-masing.   Gunakan   fungsi   yang   menggunakan metode one-way   hasing untuk   melindungi   password.   Tapi,   perlu   diselidiki dulu…apakah fungsi tersebut masih aman atau tidak?

Sedangkan  untuk  fungsi  yang  menggunakan  metode two-way  hasing,  sangat  tidak disarankan  untuk  melindungi  password,  karena  memiliki  fungsi  untuk decode atau mengembalikannya dari bentuk hash menjadi plain text.

CONTOH PENERAPAN PENGAMANAN DATA PADA APLIKASI WEB

Buat file index.php, kemudian isikan sintaks berikut:








Kegiatan Belajar:

1. Buatlah minimal 3 contoh penerapan pengamanan data pada aplikasi web!

2. Masukkan hasil pekerjaan ke dalam Laporan Kegiatan Belajar (sintaks dan output) kemudian unggah ke assignment pada Ms. Teams!


Sumber:

Wijayanti Hanifah. 2019. Pemrograman Web Dan Perangkat Bergerak XII. Surakarta: Putra

Nugraha

Muhardian   Ahmad.   2015.   6   Fungsi   Enkripsi   di   PHP Untuk   Mengamankan   Data.

Petanikode.com

 

Tidak ada komentar:

Posting Komentar