2015-09-13 37 views
0

我想在我的rails應用程序中有一個頁面,用戶可以在其中輸入一個mysql數據庫ip,用戶名和密碼。這些憑據安全地存儲在某個地方,然後rails連接到數據庫,並可以運行一些sql語句。Rails:使用用戶提供的憑據連接到我的sql數據庫

我應該在哪裏存儲證書以及如何使用Ruby on rails連接到該數據庫?沒有該數據庫的預定義模型,我不需要使用活動記錄建模

謝謝!

回答

2

這是我的第一個想法。也許這給你一點點想法如何。當然還有其他一些方法。

保存數據的地方(一個數據庫中) https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet Encrypt, decrypt using Rails

所以現在的U可以設置保存方式User.password = "plaintext"密碼,你也可以用User.password

class User 
    # password field is called "crypted_password" 
    def password= val 
    self.crypted_password = 
    ActiveSupport::MessageEncryptor.new(Rails.configuration.secret_key_base).encrypt_and_sign(val) 
    end 

    def password 
    ActiveSupport::MessageEncryptor.new(Rails.configuration.secret_key_base).decrypt_and_verify(self.crypted_password) 
    end 
end 

收到
user = User.find(1337) 
mysql = DatabaseConnection.new user.host, user.username, user.password 
result = mysql.get_users(50) 
raise result.inspect 

使用gem mysql2代替訪問的MySQL的數據庫 https://github.com/brianmario/mysql2

創建DatabaseWrapper到connecto用戶數據庫

class DatabaseConnection 

    def initialize host, username, password 
    @@connection = Mysql2::Client.new host: host, username: username, password: password 
    end 

    end 
    def run statement 
    @@connection.query statement 
    end 

    def get_users limit=100 
    run "select * from users where flag=true limit #{limit}" 
    end 
end 
0

也許你想要一個Rails應用程序有一個應用程序的數據庫,也有一堆的用戶數據庫。用戶數據庫憑證將存儲在應用程序數據庫中。您將需要存儲db密碼的散列,而不是明文。

對於如何讓用戶連接到他們的數據庫,我建議使用Google進行搜索。我會從在軌應用程序中使用多個數據庫的人們的互聯網尋找示例,以及他們如何執行連接邏輯。你可能可以從那裏解決問題,或者嘗試在SO上發佈更詳細和具體的問題。

此外,我會尋找是否有數據庫的數量可以有一個限制或一次可以發生的數據庫連接的數量。這些限制可能會由您使用的服務器施加,如果不是使用rails或基礎數據庫軟件。

+0

如果他正在哈希它,他沒有機會恢復它。明文是obv真的很糟糕,他可以使用這樣的東西http://stackoverflow.com/questions/5492377/encrypt-decrypt-using-rails –

+0

使用散列密碼是常見的做法。事實上,沒有人可以在不知道它是什麼的情況下檢索密碼,這會增加安全性。但這確實意味着他必須建立一個忘記密碼更改的驗證系統。 –

+0

沒有。你使用散列來使用散列(input_from_user)== hashed_pa​​ssword。但是這裏清楚地表明你不能去散列,因爲你不能回覆它,並且用戶不會再次輸入他的密碼。就一次。 –

相關問題