【发布时间】:2015-01-29 00:48:31
【问题描述】:
我无法在网上找到任何关于使用#order 时防止 SQL 注入的资源。将 ?-placeholders 用于 where 子句没有问题,但它似乎不适用于 order 子句。
这是一个例子:
query = Foo.where("ST_DISTANCE(coords, ?) < ?", point, distance)
# The line below works:
.order("ST_DISTANCE(coords, ST_GeomFromText('#{point}'))")
# This line doesn't work:
.order("ST_DISTANCE(coords, ST_GeomFromText(?))", point)
要明确一点:不起作用的行会返回 PGError,它会按字面意思记录 ST_DISTANCE(coords, ST_GeomFromText(?))。
这是一个已知问题吗?
【问题讨论】:
标签: ruby-on-rails postgresql activerecord postgis code-injection