Ruby on Rails のwhereメソッドの条件を文字列だけで構成するとはSQLインジェクションの危険がある。
Railsのwhereメソッドの条件を文字列だけで構成することは危険なようです。
Webサービス作成する中で「あるカラムに値が設定されているレコードを取得する」為、下記のようにコーディングしていました。
値が設定されていないだったらRailsのwhereメソッドに「selling_day:nil」みたいな感じで取得してあげれば良いかと思いますが
@stock = Goal.where('selling_day like ?','%')
ただ、文字列だけで条件を指定するとSQLインジェクションのリスクがあるようです。
具体的には
@stock = Goal.where("selling_day = '#{params[:day]}'")
みたいに書くとparams[:day]に悪意のある文字列を設定され、認証をすり抜けるリスクがあります。
下記のように条件をハッシュ値で指定するか、配列で指定するようにするとリスク回避できるようです。
@stock = Stock.where(sold:true)
下記サイトを参考にしました。
https://railsguides.jp/active_record_querying.html
https://railsguides.jp/security.html#sql%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%A7%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3
Author And Source
この問題について(Ruby on Rails のwhereメソッドの条件を文字列だけで構成するとはSQLインジェクションの危険がある。), 我々は、より多くの情報をここで見つけました https://qiita.com/akki0924/items/2e6219fb2647d5111258著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .