03-11-2016, 01:14 AM
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.
langkah kedua buat folder bcrypt di root/inc/datahandlers dan masukan file bcrypt tadi. selanjutnya edit bcrypt.php cari kode berikut.
ganti angka 13 dengan angka yang didapat tadi.
langkah ketiga edit file root/inc/datahandlers/login.php cari kode berikut:
timpa dengan ini.
langkah ke empat sama halnya diatas cari kode berikut di root/inc/datahandlers/user.php
timpa lagi dengan ini.
langkah kelima cari kode berikut di bawah ini di root/inc/functions_user.php
timpa dengan ini.
masih di file yg sama cari kode berikut.
ganti dengan ini.
kembali lagi ke folder root dan edit file member.php cari kode ini:
ganti dengan ini.
cara tesnya logout dan login kembali dan lihat hasilnya di database agan.
Sumber:
$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]](http://s8.postimg.org/ir8ebkgdx/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: