SORU
5 AĞUSTOS 2011, Cuma


Node.js şifreleri saklamak ve MongoDB

Securly deposu şifreleri ve diğer hassas verileri node.js ve mondodb kullanarak bazı örnekler arıyorum.

Her şey mongo belgede boyunca yan karma yığacağım benzersiz bir tuz kullanmak istiyorum.

Kimlik doğrulama için sadece tuz ve şifrele giriş ve saklı bir karma uyuşuyor ki?

Nasıl yapmalıyım eğer öyleyse hiç bu verilerin şifresini çözmek için ne gerek var ki?

Nasıl özel anahtarlar, hatta tuzlama yöntemleri güvenli bir sunucuda depolanır?

AES duydum ve Blowfish her ikisi de güzel seçenekler, ben ne yapmalıyım?

Bu tasarımı nasıl örnekler harika bir şekilde yardımcı olur!

Teşekkürler!

CEVAP
5 AĞUSTOS 2011, Cuma


Bunu kullanın: https://github.com/ncb000gt/node.bcrypt.js/

bcrypt sadece birkaç algoritmaları bu kullanma durumu üzerinde duruldu. Asla şifreleri şifresini çözmek, sadece kullanıcı tarafından girilen bir parola temiz metin saklı/şifreli karma eşleştiğini doğrulamak için olmalıdır.

bcrypt çok basit kullanmaktır. Burada Gelincik benim Kullanıcı şema (CoffeeScript) bir parçacık. Bycrypt yavaş olduğu zaman uyumsuz işlevleri kullanmaya (kasten) olabilir.

class User extends SharedUser
  defaults: _.extend {domainId: null}, SharedUser::defaults

  #Irrelevant bits trimmed...

  password: (cleartext, confirm, callback) ->
    errorInfo = new errors.InvalidData()
    if cleartext != confirm
      errorInfo.message = 'please type the same password twice'
      errorInfo.errors.confirmPassword = 'must match the password'
      return callback errorInfo
    message = min4 cleartext
    if message
      errorInfo.message = message
      errorInfo.errors.password = message
      return callback errorInfo
    self = this
    bcrypt.gen_salt 10, (error, salt)->
      if error
        errorInfo = new errors.InternalError error.message
        return callback errorInfo
      bcrypt.encrypt cleartext, salt, (error, hash)->
        if error
          errorInfo = new errors.InternalError error.message
          return callback errorInfo
        self.attributes.bcryptedPassword = hash
        return callback()

  verifyPassword: (cleartext, callback) ->
    bcrypt.compare cleartext, @attributes.bcryptedPassword, (error, result)->
      if error
        return callback(new errors.InternalError(error.message))
      callback null, result

Ayrıca, this article, which should convince you that bcrypt is a good choice okuma ve olma önlemek yardımcı "iyi ve gerçekten". effed

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Krumme1996

    Krumme1996

    21 EYLÜL 2009
  • Missouri Star Quilt Company

    Missouri Sta

    18 ŞUBAT 2009
  • xiaoyu85

    xiaoyu85

    20 ŞUBAT 2010