quote
の使用 安全です。 で回答を読みましたリンクしたページ
、そしてquote
と言っている人は誰もいません 安全ではありません。 「引用符」の使用についての質問があります。はい、文字列を引用符で囲むだけの場合、安全ではありません。例:
q = "SELECT * FROM users where email = '#{params[:email]}'"
ただし、quote
を使用する (方法)は問題ありません:
q = "SELECT * FROM users where email = #{connection.quote(params[:email])}"
コンソールで遊んで、それを壊すために最善を尽くすことができますが、私はあなたができるとは思いません:
2.3.3 :003 > ActiveRecord::Base.connection.quote("f''oo")
=> "'f''''oo'"
あなたが成功した場合、私はRailsチームが(私的に)知りたいと確信しています!しかし、ご覧のとおり、quote
メソッドは、最初と最後に引用符を付けるだけではありません。
また、信頼できる引用を探していると言うので、ソースコード自体のコメントは、ユーザー入力の引用がこれらの関数の意図された目的であることを示唆しています。
# Quotes the column value to help prevent
# {SQL injection attacks}[http://en.wikipedia.org/wiki/SQL_injection].
def quote(value)
# Quotes strings for use in SQL input.
def quote_string(s) #:nodoc:
(quote_string
を表示していることに注意してください コメントには、おそらくquote
を使用する必要があります 、データ型を把握して適切な処理を実行しようとします。)
ちなみに、これはあなたと同様の質問で、2014年に私からの回答があり、いくつかの選択肢もあります:レールで動的バインディングを使用してraw更新sqlを実行する方法