簡體   English   中英

Rails:將加密數據存儲在數據庫中

[英]Rails: storing encrypted data in database

我想加密數據庫,因為存儲了機密數據。 我用mongodb和mongoid。 這種數據庫有可能嗎? 如果不是,你可以推薦哪些替代方案?

PS主要目的是:如果有人破解服務器並竊取數據庫,那將是無法加密的。

更新:感謝nickh ,我發現ActiveRecord有很多靈魂,但Mongoid和其他Mongo clinets沒有。 為Mongo和Mongoid找到一些靈魂會很棒!

我已經使用attr_encrypted與Mongo和Mongoid一起工作了。 它只需要幾個調整。

確保在模型中顯式創建由attr_encrypted自動創建的所有encrypted_字段。 例如,如果你有:

    attr_encrypted :email, :key => 'blah blah blah', :encode => true

你需要:

    field :email, :type => String
    field :encrypted_email, :type => String

另請注意,您需要告訴它對加密字符串進行編碼,否則Mongo會大聲抱怨。

最后,如果您正在加密哈希,請執行以下操作:

    field :raw_auth_hash, :type => Hash
    field :encrypted_raw_auth_hash, :type => String

    attr_encrypted :raw_auth_hash, :key => 'blah', :marshal => true, :encode => true

我在attr_encrypted gem上取得了很大的成功。 但是,我只在ActiveRecord中使用它。 我不知道它是否適用於MongoMapper或Mongoid。

無論你如何實現這一點,我強烈建議只加密某些字段。 不要加密每個表中的每個字段。 這樣做會很難使用關聯,使用LIKE搜索等。

嘗試mongoid-encrypted-fields gem - 它是無縫的,因為它使用mongoize / demongoize方法處理加密。

只需定義您的字段:

field :ssn, type: Mongoid::EncryptedString

然后您可以像平常一樣訪問它,但數據是加密存儲的。

http://ezcrypto.rubyforge.org/

將postgreSQL與ezcrypto gem atm一起使用 - 工作得相當好,盡管在使用加密字段的模型之間使用關聯存在限制(這可能取決於我無法找到該項目的正確最新分支)。

加密字段作為BYTEA數據類型存儲在postgreSQL數據庫中,並且通常需要轉義單引號(插件的另一個問題),

PostgreSQL也可以訪問自己的加密/解密模式'pgcrypto',它也返回BYTEA數據類型。 不知道這將如何與Rails activerecord和模型之間的關聯集成(可能很糟糕:D)。

我在Mongoid ruby​​適配器的應用程序中使用MongoDB。 Ryan Bates(Rails的半神人)最近在這個問題http://railscasts.com/episodes/250-authentication-from-scratch上做了出色的軌道廣播。

我在MongoDB應用程序中使用它,它可以很好地加密數據。 他的教程視頻主要用於加密密碼,但您可以將其調整為您想要的任何其他字段值。

我也使用attr_encrypted取得了很大的成功,但我不確定它是否適用於MongoDB; 僅與ActiveRecord一起使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM