如何使用 Ransack 在 Rails 中避免 SQL 注入
How to avoid SQL Injection in Rails with Ransack
如何去掉下面方法中的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
我尝试了多种方法,但 none 行得通。
谁能帮我解决这个问题?
您忘记在 ?
后添加逗号 ,
,并且您没有传递正确的 where 条件,假设 BOTranslationValue
和 BOTranslationToken
是正确的 table 名称,请尝试以下查询:
def self.with_translation_value_of_language_id_eq(language_id)
joins('BOTranslationValue on BOTranslationToken.id = BOTranslationValue.boTranslationTokenID ')
.where("BOTranslationValue.languageID = ?", language_id)
.select('BOTranslationToken.*, BOTranslationValue.value as current_language_value')
end
如何去掉下面方法中的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
我尝试了多种方法,但 none 行得通。
谁能帮我解决这个问题?
您忘记在 ?
后添加逗号 ,
,并且您没有传递正确的 where 条件,假设 BOTranslationValue
和 BOTranslationToken
是正确的 table 名称,请尝试以下查询:
def self.with_translation_value_of_language_id_eq(language_id)
joins('BOTranslationValue on BOTranslationToken.id = BOTranslationValue.boTranslationTokenID ')
.where("BOTranslationValue.languageID = ?", language_id)
.select('BOTranslationToken.*, BOTranslationValue.value as current_language_value')
end