Keamanan adalah salah satu faktor penting yang harus diperhatikan oleh pemilik website. Beberapa langkah yang bisa Anda ambil untuk meningkatkan keamanan website termasuk menggunakan password yang kuat, mengaktifkan autentikasi dua faktor (2FA) saat login, hingga menggunakan metode bcrypt. Dalam artikel ini, kami akan menjelaskan tentang apa itu bcrypt beserta cara mengamankan password WordPress dengan metode bcrypt.
Secara default, WordPress menggunakan metode hash MD5 untuk mengamankan password WordPress. Namun, beberapa sumber penelitian keamanan melansir bahwa kemampuan MD5 dalam melindungi data terbilang belum cukup aman dari metode pembalikan atau reversing.
Untuk mengatasi hal ini, WordPress mencoba menerapkan kombinasi tambahan seperti MD5 dan phpass untuk melakukan hash password. Tujuanya, agar password WordPress anda lebih sudah untuk dilakukan reversing oleh para peretas.
Cara kerja hashing WordPress
Fungsi inti wp_hash_password WordPress menggunakan framework phpass dan delapan tingkatan hashing berbasis MD5. Fungsi wp_hash_password menggunakan framework phpass untuk menggabungkan key stretching dengan delapan pass MD5 untuk menghasilkan algoritma hashing yang sangat bagus. Namun, pada kenyataannya hal tersebut belum cukup aman.
Password stored dengan menggunakan sistem enkripsi MD5 WordPress adalah metode sederhana. Namun, itu sangat berisiko. Jika peretas menemukan kunci hashing, mereka dapat membalikkan semua kata sandi kembali ke teks.
Apa itu bcrypt?
Bcrypt merupakan fungsi hashing kata sandi yang dirancang berdasarkan cipher Blowfish. Fungsi bcrypt merupakan algoritma hash password dasar untuk OpenBSD dan sistem lain termasuk beberapa distribusi Linux seperti SUSE Linux, namun dapat diimplementasikan pada bahasa pemrograman seperti PHP sehingga dapat diaplikasikan pada WordPress.
Pada panduan kali ini, Rumahweb akan memberikan solusi mengamankan password WordPress agar lebih aman dengan menggunakan bcrypt.
Catatan:
- Pengujian pada WordPress versi terbaru, 5.7-ID dan
- Menggunakan tool milik tim Roots dengan lisensi MIT.
- Telah dimodifikasi oleh penulis sesuai core WordPress pengujian.
Pemasangan script plugin
Pada langkah awal, Anda wajib membuat folder khusus dengan nama mu-plugins didalam folder wp-content. Mu-plugin merupakan folder manual plugin yang dimaksudkan agar fungsi tombol seperti non-aktifkan/hapus plugin tidak dapat digunakan melalui menu plugins dashboard admin.
Setelah folder mu-plugins dibuat, silahkan Anda buat lagi satu file PHP dengan nama bcrypt.php dengan isi skrip dibawah:
<?php
/*
Possible algorithms: bcrypt $2*$, Blowfish (Unix)
*/
if ( version_compare( phpversion(), '5.6', '>=' )
&& ! function_exists( 'wp_check_password' )
&& ! function_exists( 'wp_hash_password' )
&& ! function_exists( 'wp_set_password' )
) :
/*
Prefix hash md5 = $P$
*/
define( 'WP_OLD_HASH_PREFIX', '$P$' );
function wp_check_password( $password, $hash, $user_id = '' ) {
if ( 0 === strpos( $hash, WP_OLD_HASH_PREFIX ) ) {
global $wp_hasher;
if ( empty( $wp_hasher ) ) {
require_once( ABSPATH . WPINC . '/class-phpass.php' );
$wp_hasher = new PasswordHash( 10, true );
}
$check = $wp_hasher->CheckPassword( $password, $hash );
if ( $check && $user_id ) {
$hash = wp_set_password( $password, $user_id );
}
}
$check = password_verify( $password, $hash );
return apply_filters( 'check_password', $check, $password, $hash, $user_id );
}
function wp_hash_password( $password ) {
$options = apply_filters( 'wp_hash_password_options', [] );
return password_hash( $password, PASSWORD_DEFAULT, $options );
}
/*
function wordpress_hash_password( $password ) {
require_once( '/path/to/wp-includes/class-phpass.php' );
$wp_hasher = new PasswordHash( 8, TRUE );
$hashed_password = $wp_hasher->HashPassword( $password );
return $hashed_password;
{
*/
function wp_set_password( $password, $user_id ) {
global $wpdb;
$hash = wp_hash_password( $password );
$wpdb->update( $wpdb->users, [ 'user_pass' => $hash, 'user_activation_key' => '' ], [ 'ID' => $user_id ] );
wp_cache_delete( $user_id, 'users' );
return $hash;
}
endif;
File bcrypt.php yang telah Anda buat, silahkan disimpan dalam folder mu-plugins.
Pada tahap ini telah selesai, kemudian untuk memastikan plugin telah aktif, dapat dicek melalui menu plugin dashboard admin.
Pada gambar diatas, silahkan klik “Harus-Gunakan” untuk melihat plugin bcrypt yang terpasang dan akan terlihat seperti gambar dibawah.
Menjalankan hash Bcrypt
Setelah mengikuti beberapa tahapan diatas, proses hashing tidak langsung dapat diterapkan sebelum Anda mengaplikasikannya secara manual.
Untuk memastikannya, Anda perlu mengakses database melalui phpmyadmin atau command line dan akan melihat algoritma hashing $P$ pada table users. Contoh pada gambar dibawah
Gambar diatas, terlihat password yang dihash masih menggunakan tipe MD5.
Untuk mengubahnya menjadi bcrypt, silahkan Anda logout dashboard WordPress dan kemudian login kembali ke akun usernya. Berikut tampilan setelah re-login:
Perubahan type hashing menjadi bcrypt akan menjadi permanen, hal ini berlaku otomatis untuk users baru yang membuat akun pada web WordPress. Sedangkan untuk user lama, hanya perlu re-login.
Demikian artikel kami tentang cara mengamankan password WordPress dengan metode bcrypt, semoga bermanfaat.