【发布时间】:2020-03-26 10:55:51
【问题描述】:
我遇到了这个示例,其中不使用绑定参数,而是将键值对传递给 heredoc。我知道这将允许用户以任何顺序输入输入,但我的问题是,如果我使用键值对而不是绑定参数,它是否仍然可以防止 SQL 注入攻击?如果没有,有没有办法让用户在没有任何特定顺序的情况下传递输入,同时还能防止注入攻击?
以下是使用键值对的示例:
def self.find_by_id(id)
found_user = QuestionDatabase.instance.execute(<<-SQL, id: id)
SELECT
users.*
FROM
users
WHERE
users.id = :id
SQL
found_user.nil? ? nil : User.new(found_user)
end
以下是使用绑定参数的示例:
def self.find_by_id(id)
found_user = QuestionDatabase.instance.execute(<<-SQL, id)
SELECT
users.*
FROM
users
WHERE
users.id = ?
SQL
found_user.nil? ? nil : User.new(found_user)
end
【问题讨论】:
标签: sql sql-injection