如何在postgres中转义字符串,如sql语句?

时间:2011-08-07 02:51:27

标签: sql ruby-on-rails ruby postgresql

我使用Rails作为底层数据库的postgresql项目。我有一个需要一些修改的搜索表单。具体来说,我需要确保如果某种类型的东西像'drop table allusers',我的手上没有灾难。无论如何,我只能将dearch限制在一个表中,并确保搜索“drop table allusers”之类的内容不会丢弃表但只返回结果?

2 个答案:

答案 0 :(得分:3)

如果您使用ActiveRecord进行所有查询和占位符(?),只要您有参数传入,那么没有什么可担心的。数据正在转义,用户输入无法改变查询的性质。

http://guides.rubyonrails.org/security.html#sql-injection

答案 1 :(得分:0)

最简单的方法可能是确保您已正确设置数据库角色。查询在其下执行的角色应该只能执行您希望它执行的操作。听起来您只需要Web应用程序用来连接数据库的角色,以便能够针对allusers表发出SELECT语句。如果是这种情况,则创建一个角色,并在allusers表上授予它SELECT权限。

有关database rolesgranting access privileges的更多信息,请参阅PostgreSQL文档。