Menggunakan Hash Bcrypt Di MyBB

by Oncom - 03-11-2016 at 01:14 AM
Administrator
Administrators
Posts:
35
Joined:
Mar 2016
Likes:
0
Reputation:
1
2 Year Of Member
#1
OP
Posted: 03-11-2016, 01:14 AM (This post was last modified: 03-11-2016, 01:15 AM by Oncom.)
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:


Harta, Tahta, Pevita
Reply
Find Posts
Register an account or login to reply
Create an account
Create a free account today and start posting right away. It only takes a few seconds.
Login
Log into an existing account.
2 Guest(s)