我想在我的rails应用程序中有一个页面,用户可以在其中输入mysql数据库的ip,用户名和密码。这些凭据安全地存储在某处,然后rails连接到数据库并可以运行一些sql语句。
我应该在哪里存储凭据以及如何使用Ruby on rails连接到该数据库?该数据库没有预定义的模型,我不需要使用活动记录建模
谢谢!
答案 0 :(得分:2)
这是我的第一个想法。也许这会让你有点想法。肯定还有其他一些方法。
将数据保存在某处(在数据库中) https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet Encrypt, decrypt using Rails
所以现在你可以用保存方式设置密码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-databases
https://github.com/brianmario/mysql2
创建DatabaseWrapper以连接到用户数据库
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