使用 Postgres 在 rails 应用服务器中处理查询参数中的转义序列
Handling escape sequence in query params in rails app server with Postgres
query_string = params[:q]
model.where("name ILIKE ? ", "#{query_string}").limit(10)
在控制器中我有上面的行
params[:q]
是用户输入。
只要用户输入以 \
结尾,比如说 police \
,Postgres 就会抛出这个错误:
ActionView::Template::Error (PG::InvalidEscapeSequence: ERROR: LIKE pattern must not end with escape character.
我们如何优雅地处理这种情况?
使用不同的转义字符,例如:
WHERE name ILIKE 'pattern\' ESCAPE '/'
如果没有安全转义符,可以加倍:
WHERE nane ILIKE replace('pattern\', '\', '\')
query_string = params[:q]
model.where("name ILIKE ? ", "#{query_string}").limit(10)
在控制器中我有上面的行
params[:q]
是用户输入。
只要用户输入以 \
结尾,比如说 police \
,Postgres 就会抛出这个错误:
ActionView::Template::Error (PG::InvalidEscapeSequence: ERROR: LIKE pattern must not end with escape character.
我们如何优雅地处理这种情况?
使用不同的转义字符,例如:
WHERE name ILIKE 'pattern\' ESCAPE '/'
如果没有安全转义符,可以加倍:
WHERE nane ILIKE replace('pattern\', '\', '\')