0

我们正在探索如何通过只允许关键函数在我们的rails应用程序中执行职责来限制SQ​​L注入风险。我是安全管理人员,而不是全职的铁路人员。每个功能的多个数据库用户

我看到它的方式,只有在创建帐户(注册)或帐户被修改(用户配置文件更新)时才会写入数据库。为了简化目的,我们假设用户在应用程序中没有发生其他更新。

如果有人不会阻止对只读请求的SQL注入攻击,我们可以通过两次不同的调用得到更好的保护。

Can rails是否支持以下配置? - 适用于所有“读”

  • 一个数据库连接请求
  • 所有“写”
  • 一个数据库连接(完全相同的数据库)请求

如果是这样,怎么会是看在数据库文件和代码请求?

+0

您应该能够使用给定以下问题的答案的变体。它仅仅是为模型声明一个单独的数据库,而不是用不同的设置连接到同一个数据库。 http://stackoverflow.com/questions/6122508/connecting-rails-3-1-with-multiple-databases – rovermicrover 2013-04-08 22:22:48

+0

@rovermicrover虽然有趣的是,这个问题似乎并没有解决在db.yml文件中访问具有不同权限的相同数据库(user1 =“insert,update”user2 =“select”) – hackajar 2013-04-09 00:05:56

+0

好吧,两个模型,使用同一张表。每个人都有自己的DB用户,拥有不同的权限。人们甚至可以从另一个继承,唯一的区别是在提供的链接中通过方法声明的数据库设置/用户。 – rovermicrover 2013-04-09 00:28:00

回答

0

我以为我不妨发表一下。

class User < ActiveRecord::Base 
    self.abstract_class = true 

    ... 

end 

CUR =创建更新读

R =只读

class UserCUR < User 
    establish_connection "user_cur_database_#{Rails.env}" 
end 

class UserR < User 
    establish_connection "user_r_database_#{Rails.env}" 
end 

的database.yml

user_cur_database_production: 
    adapter: w.e.sql 
    host: yourhost 
    username: user_cur 
    password: ******** 
    database: yourdb 

user_r_database_production: 
    adapter: w.e.sql 
    host: yourhost 
    username: user_r 
    password: ******** 
    database: yourdb 

当用户将具有不同的访问权限

呦你可以做同样的事情,但在实际的Rails应用程序而不是在数据库中,我知道这不是你正在寻找的东西,但可以提供更多的帮助。

Is there an easy way to make a Rails ActiveRecord model read-only?

+0

是的,这是我正在寻找的。另外,有助于解决一个问题:对于rails或任何3层web平台来说,使用db权限获得粒度是否很常见? – hackajar 2013-04-09 16:38:52

相关问题