Rumahweb Journal
opengraph - WordPress Security : Mengamankan Password Dengan bcrypt

WordPress Security : Mengamankan Password Dengan bcrypt

Artikel kali ini akan membahas tentang WordPress Security, yaitu mengamankan password dengan metode bcrypt. Cara ini dianggap lebih aman dari sekadar menggunakan MD5, yang bisa ditembus dengan metode reversing. Berikut informasi selengkapnya.

Tipe hashing pada CMS WordPress secara default menggunakan MD5, namun beberapa sumber penelitian keamanan melansir bahwa kemampuan MD5 dalam melindungi data terbilang belum cukup aman dari metode pembalikan atau reversing. Hal ini membuat WordPress mencoba menerapkan kombinasi tambahan seperti MD5 + phpass untuk melakukan hash password.

Tujuan dari panduan ini adalah, membuat password WordPress anda sekalipun menjadi leaked akan membuat peretas kesulitan untuk melakukan reversing.

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.

Penjelasan 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.

install plugin untuk wordpress security
Menu Plugin

Pada gambar diatas, silahkan klik “Harus-Gunakan” untuk melihat plugin bcrypt yang terpasang dan akan terlihat seperti gambar dibawah.

install plugin bcrypt di wordpress

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

ubah tipe password di wordpress
Sebelum bcrypt

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:

ubah type password menjadi bcrypt di wordpress
Setelah bcrypt

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 tentang WordPress Security untuk mengamankan password dengan metode bcrypt. Semoga dapat membantu.

Tinggalkan Komentar

Fredric Lesomar

I am an Ameteur Programer and Cybersecurity Enthusiast. Love Much, Mother Python Language, Machine Learning and You!