在使用 Javascript Query Builder 时防止 Rails 中的 SQL 注入
Preventing SQL Injection in Rails while using Javascript Query Builder
我想在多用户应用程序中使用jQuery查询生成器作为工具:http://mistic100.github.io/jQuery-QueryBuilder/
我知道如果设置不正确,使用这样的工具可能会给 SQL 注入带来很大的风险。
我知道防止SQL注入的传统方法(即硬编码WHERE语句而不是直接插入用户输入的字符串),但在这种情况下,考虑到我们试图保持事物的动态和灵活性,这将证明会更加困难。
我想知道在使用类似此查询构建器之类的东西时是否有任何简单的方法来设置安全流程。主要关注的是一个用户能够访问和/或修改另一个用户的记录(我不担心他们弄乱自己的记录,但他们都在同一个数据库中)。
我的一个想法是查找和替换任何有问题的单词(即 DROP 等),但我知道这会限制用户输入(即如果他们想搜索与"他丢球"匹配的记录)......而且也许也不是万无一失的。
除了必须编写一些复杂的算法来生成SQL代码服务器端之外,还有其他方法可能有效吗?
一般来说,
你应该只接受对索引的GET请求的真正"过滤"参数。即便如此,您也不想随意获取所有参数并将它们推入 WHERE 子句中。
如果你想让用户创建复杂的条件,你可以创建一个简单的解析器,它接受用户输入并通过 Arel 构建 SQL 语句。
或者,您可能希望使用现有引擎进行全文搜索,例如 Lucene。
相关文章:
- 如何从rails中的代码中删除新行( )
- Jquery:代码在rails中的页面加载时未执行
- Jquery append oly获取循环Rails中的最后一个elemen
- 通过rails中的Ajax在控制器B的每个视图中渲染控制器a的视图
- 如果不刷新Rails中的浏览器,AJAX请求就无法看到效果
- 更新'喜欢'使用Ajax的Rails中的计数
- 按钮,用于更改Rails中的数据库值
- 如何刷新rails中的特定页面
- 将变量从link_to传递到rails中的模态
- 通过Rails中的自定义Jquery对话框处理链接的确认
- 用于显示索引视图 Rails 中的页面的下拉链接
- 将参数传递给 Rails 中的选择更改
- 将参数传递给Rails中的onchange事件
- 使用rails中的ajax请求更新DB
- Rails中的共享JS(Coffee)
- Javascript/JQuery中的本地语言类似于Rails中的本地语
- 尝试使用Backbone.sync从Rails中的动作控制器获取数据-非restful
- 如何使用Ajax更新Rails中的Button
- 根据Rails中的下拉框值自动填充文本字段
- 在从ruby on rails中的资产管道加载的布局上链接Javascript函数