BackBox Indonesia

Full Version: Menggunakan Hash Bcrypt Di MyBB
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Selamat pagi forum tercinta, kali ini ane mau share menggunakan bcrypt pada mybb. di versi sekarang mybb masih menggunakan algoritma secure hashing md5+salt mungkin di versi selanjutnya di mybb 2.0 sudah menggunakan hash bcrypt. ane sangat menyarankan untuk mengganti md5 ke bcrypt kenapa?
$cost adalah parameter yang digunakan untuk menentukan seberapa banyak hash dilakukan. Untuk bcrypt, jika nilainya adalah 10 maka hashing akan dilakukan sebanyak 2^10 atau 1024 kali. Ini cukup aman karena dengan komputer biasa dalam satu detik kurang dari 7 password yang bisa dicoba. Jika password asli user adalah 8 karakter alpha numeric yang acak, maka akan dibutuhkan waktu sekitar 12 ribu tahun untuk membongkarnya!

Rekomendasi:

1.Backup dulu
2.Minimum membutuhkan PHP 5.5.0
3.Download bahan"nya cost dan bcrypt

Langkah awal upload cost (rbieyj.php) ke direktori root selanjutnya akses url berikut http://www.websiteagan.com/rbieyj.php nanti akan menghasilkan nilai hash dari cost.

[Image: Screenshot_03102016_07_57_46_PM.png]

langkah kedua buat folder bcrypt di root/inc/datahandlers dan masukan file bcrypt tadi. selanjutnya edit bcrypt.php cari kode berikut.

Code:
protected $rounds = 13;


ganti angka 13 dengan angka yang didapat tadi.

langkah ketiga edit file  root/inc/datahandlers/login.php cari kode berikut:

Code:
if($salted_password !== $this->login_data['password'])
       {
           $this->invalid_combination(true);
           return false;

timpa dengan ini.

Code:
   {
               $this->invalid_combination(true);
               return false;
           } else {
               //update the password to bcrypt
               include_once(dirname(__FILE__)."/bcrypt/bcrypt.php");

               $hasher = new BcryptHasher;

               $sql_array = array(
                   "password" => $hasher->make($user['password'])
               );

               $db->update_query("users", $sql_array, "uid = '{$this->login_data['uid']}'");
           }
       } else {
           include_once(dirname(__FILE__)."/bcrypt/bcrypt.php");
           $hasher = new BcryptHasher;
           if(!$hasher->check($user['password'], $this->login_data['password'])) {
               $this->invalid_combination(true);
               return false;
           }

langkah ke empat sama halnya diatas cari kode berikut di root/inc/datahandlers/user.php

Code:
 // MD5 the password
       $user['md5password'] = md5($user['password']);

       // Generate our salt
       $user['salt'] = generate_salt();

       // Combine the password and salt
       $user['saltedpw'] = salt_password($user['md5password'], $user['salt']);

timpa lagi dengan ini.

Code:
  $user['salt'] = "dong"; // hacky fix that works
       //return a bcrypt hash
       include_once(dirname(__FILE__)."/bcrypt/bcrypt.php");
       $hasher = new BcryptHasher;
       $user['saltedpw'] = $hasher->make($user['password']);


langkah kelima cari kode berikut di bawah ini di root/inc/functions_user.php

Code:
if(salt_password(md5($password), $user['salt']) === $user['password'])
   {
       return $user;
   }
   else
   {
       return false;


timpa dengan ini.

Code:
if(strlen($user['password']) == 32) {
       if(salt_password(md5($password), $user['salt']) == $user['password'])
       {
           include_once(dirname(__FILE__)."/datahandlers/bcrypt/bcrypt.php");

           $hasher = new BcryptHasher;
           $user['password'] = $hasher->make($password);
           $sql_array = array(
               "password" => $user['password']
           );
           $db->update_query("users", $sql_array, "uid = '{$user['uid']}'");

           return $user;
       }
       else
       {
           return false;
       }
   } else {
       include_once(dirname(__FILE__)."/datahandlers/bcrypt/bcrypt.php");
       $hasher = new BcryptHasher;
       if(!$hasher->check($password, $user['password'])) {
           $this->invalid_combination(true);
           return false;
       } else {
           return $user;
       }

masih di file yg sama cari kode berikut.

Code:
$saltedpw = salt_password($password, $salt);


ganti dengan ini.

Code:
// replace salted password with bcrypt
   include_once(dirname(__FILE__)."/datahandlers/bcrypt/bcrypt.php");
   $hasher = new BcryptHasher;
   $saltedpw = $hasher->make($password);

kembali lagi ke folder root dan edit file member.php cari kode ini:

Code:
$logindetails = update_password($user['uid'], md5($password), $user['salt']);

ganti dengan ini.

Code:
$logindetails = update_password($user['uid'], $password, $user['salt']);

cara tesnya logout dan login kembali dan lihat hasilnya di database agan.

Sumber:

komeng ^_^ !
Sudah di pastikan kalo pake type hash ini pasti aman :D
ada juga yang aman, jadi cuma hash md5 tapi dikasih pengacak
(03-14-2016, 07:38 AM)koboi Wrote: [ -> ]Sudah di pastikan kalo pake type hash ini pasti aman :D

iya kang bener banget dan wajib di coba.
(03-17-2016, 09:03 AM)Local Host Wrote: [ -> ]ada juga yang aman, jadi cuma hash md5 tapi dikasih pengacak

wah boleh tuh kang tutorialnya dishare disini.
ijin save tutor ah :D siapa tau ntr2an ane butuh :D