【发布时间】:2020-12-26 20:35:20
【问题描述】:
下面的方法如何去除SQL盲注?
def self.with_translation_value_of_language_id_eq(language_id)
joins('LEFT JOIN BOTranslationValue on BOTranslationToken.id = BOTranslationValue.boTranslationTokenID '\
"AND BOTranslationValue.languageID = #{language_id}")
.select('BOTranslationToken.*, BOTranslationValue.value as current_language_value')
end
我尝试了sanitize_sql_array,但它不起作用。
还有以下方式
def self.with_translation_value_of_language_id_eq(language_id)
joins('LEFT JOIN BOTranslationValue on BOTranslationToken.id = BOTranslationValue.boTranslationTokenID '\
"AND BOTranslationValue.languageID = ?" language_id )
.select('BOTranslationToken.*, BOTranslationValue.value as current_language_value')
end
我尝试了多种方法,但都没有奏效。
谁能帮我解决这个问题?
【问题讨论】:
-
什么是self class,是指型号名称?
-
您在执行第二种方法时遇到的错误是什么?看起来没问题(除了 language_id 之前缺少逗号)
-
“它不起作用”是什么意思?有错误吗?错误说明了什么?如果没有错误,那么你得到什么结果?你期待什么结果?
-
我没有发现您的代码有任何问题,除了缺少逗号。或者,作为 lazy (!!) 解决方案,您可能会坚持使用原始实现,但将
language_id替换为language_id.to_i- 您不能使用整数进行 SQL 注入 :) -
它不起作用意味着值没有得到清理。是的,我试过
language_id.to_i,但效果不佳。
标签: ruby-on-rails ruby ruby-on-rails-4 activerecord ransack