【发布时间】:2014-12-27 08:54:19
【问题描述】:
我需要通过ActiveRecord::Base.connection.execute(USER_INPUT)的方法查询
查询字符串由 USER INPUT 给出(他们可以通过 URL 查询任何time period、product_type)
如何防止 SQL 注入?为了避免对我的系统造成任何损害?
是否可以限制用户只能查询SELECT 除了DELETE, TRUNCATE, INSERT, UPDATE ...
【问题讨论】:
-
想要拥有它似乎很奇怪。是否有可能拥有一组更细粒度的可能命令?此外,您所说的方式是 SQL 注入,它只是用户输入。您需要提供一些规则,您将根据这些规则制定接受用户输入的策略。
-
你不能。您正在接受来自用户的 SQL。当您打开门并说“进来,运行您喜欢的任何 SQL”时,阻止 SQL“注入”是没有意义的。您是否尝试过滤用户输入以限制可能运行的种类的SQL命令?
标签: ruby-on-rails ruby activerecord postgresql-9.3