BackBox Indonesia
Menggunakan Hash Bcrypt Di MyBB - Printable Version

+- BackBox Indonesia (https://www.backboxindonesia.or.id)
+-- Forum: Web Development (https://www.backboxindonesia.or.id/forum-25.html)
+--- Forum: Webmaster Security (https://www.backboxindonesia.or.id/forum-28.html)
+--- Thread: Menggunakan Hash Bcrypt Di MyBB (/thread-28.html)



Menggunakan Hash Bcrypt Di MyBB - Oncom - 03-11-2016

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:




RE: Menggunakan Hash Bcrypt Di MyBB - anongep - 03-11-2016

komeng ^_^ !


RE: Menggunakan Hash Bcrypt Di MyBB - koboi - 03-14-2016

Sudah di pastikan kalo pake type hash ini pasti aman :D


RE: Menggunakan Hash Bcrypt Di MyBB - Local Host - 03-17-2016

ada juga yang aman, jadi cuma hash md5 tapi dikasih pengacak


RE: Menggunakan Hash Bcrypt Di MyBB - Oncom - 03-17-2016

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


RE: Menggunakan Hash Bcrypt Di MyBB - Oncom - 03-17-2016

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


RE: Menggunakan Hash Bcrypt Di MyBB - k1dd1es - 05-09-2016

ijin save tutor ah :D siapa tau ntr2an ane butuh :D