2015-10-19 28 views
0

加密數據

剛剛完成將attr_encrypted添加到某些模型後,我認爲黑客的工作可能並不那麼困難。Ruby on Rails - 爲什麼某些數據需要加密?

我有一個數據庫在不同的服務器上的應用服務器 - 但是,如果有人設法到數據庫服務器,該人也可以訪問存儲密鑰的應用服務器(可能該假設是不正確的),因爲它們具有相同類型的安全措施。

問題

Rails代碼被存儲在服務器上的一個可讀的文本格式,因此,祕密密鑰可被訪問。當然,如果某人確實掌握了數據庫,並且持有這些密鑰,那麼整個數據加密變得無關緊要,因爲它只是(稍微)延長黑客時間來解密信息。

如果是這樣,是否還有進一步的安全措施可以採取,或者我完全錯過了加密的概念?

我查看了attr_encrypted gem以及相關的自述文件和問題,但找不到任何有用的東西。

回答

0

attr_encrypted保護您的數據免受簡單的數據泄漏。想NSA嗅探一個DC間數據線(你的數據庫複製日誌將被髮送到哪裏)或心懷不滿的DBA(無法訪問應用程序源)將所有數據轉儲到互聯網中。

如果實際違規,入侵者可能無法訪問應用代碼和數據庫(取決於您的架構和安全措施)。如果他們都有,那麼是的,這是遊戲結束。

總的來說,最好是[敏感數據]比沒有。不會傷害,我會說。

0

請勿將密鑰放入應用服務器,也不要將它們檢入到git存儲庫中。

而是使用環境變量。你可以有不同的開發和生產方法。

在Heroku上很容易做到(例如)。

我有一個加密的擔憂:

# app/models/concerns/encryption.rb 

module Encryption 

    extend ActiveSupport::Concern 

    module ClassMethods 
    def encryption_key 
     ENV['ENCRYPT_KEY'] 
    end 
    end 

end 

在模型中,我這樣做

class User < ActiveRecord::Base 

    include Encryption 
    attr_encrypted :name, :key => encryption_key 

end 

在發展中,我使用.env文件來存儲密鑰,並與工頭檢索。

+0

嗨@swards,感謝您的幫助。 它鼓勵我將其移出回購協議(儘管我必須交換所有的密鑰,因爲它們自開始以來都是版本化的)... 對不起,但如果服務器是擦去,你的本地安全副本消失(筆記本電腦失竊,數據損壞等)。如果不是在回購中,你會如何備份這些密鑰,但某些開發人員仍可訪問這些密鑰? – cb24

相關問題