Enkripsi Sandi

Katasandi atau yang lebih dikenal dengan password tidak harus disimpan dalam databes dengan ‘telanjang’ begitu saja, tentu bila ada seseorang yang dapat mengakses database kita tentu dia akan dengan mudah membacanya, walaupun sudah masuk kedalam database, paling tidak sedikit puyeng lah membaca sandi yang terenkripsi dan ujing-ujungnya bunuh diri.

DataMapper mendukung BCryptHash properti, karena bcrypt memberikan keamaan yang cukup menjanjikan. Awok, disini saya akan mulai membuat User model, tapi sebelumnya saya harus menginstall gem yang saya butuhkan

#karena saya tidak menggunakan `rvm` jadi saya harus menggunakan sudo terlebih dahulu!
$ sudo gem install data_mapper
$ sudo gem install dm-sqlite-adapter

ketika saya melakukan instalasi gem data_mapper secara otomatis depedensi bcrypt-ruby terinstal juga. Next, saya membuat sebuah file dengan nama model.rb dan saya letakan beberapa gem seperti dibawah ini

require 'rubygems'
require 'data_mapper'
require 'dm-sqlite-adapter'
require 'bcrypt'

DataMapper.setup(:default, "sqlite://#{Dir.pwd}/db.sqlite")

Selanjutnya saya akan buat user model, tentunya saya harus memasukan DataMapper::Resource dan BCrypt di dalamnya

class User
  include DataMapper::Resource
  include BCrypt

  property :id, Serial, :key => true
  property :nama, String, :length => 3..30
  property :sandi , BCryptHash
end

DataMapper.finalize
DataMapper.auto_upgrade!

Sekarang waktunya mencoba!

$irb
irb(main):001:0> require './model'
=> true
irb(main):002:0> @user = User.new
=> #<User @id=nil @nama=nil @sandi=nil>
irb(main):003:0> @user.nama = "dodol"
=> "dodol"
irb(main):004:0> @user.sandi = "dodol123"
=> "dodol123"
irb(main):005:0> @user.save
=> true
irb(main):006:0> User.first
=> #<User @id=1 @nama="dodol" @sandi="$2a$10$rGe7x2RA8iN1eLJLB5IqceONeOYQBs5pToMQwkSAQlnghs29bv/pm">
irb(main):007:0> User.first.sandi
=> "$2a$10$rGe7x2RA8iN1eLJLB5IqceONeOYQBs5pToMQwkSAQlnghs29bv/pm"
irb(main):008:0> User.first.sandi == "dodol123"
=> true

Bagus, sandi dalam database kita sudah terenkripsi, semoga bermanfaat!

download source

rss facebook twitter github youtube mail spotify instagram linkedin google pinterest medium vimeo