タグ

BrakemanとSecurityに関するYassLabのブックマーク (1)

  • ActiveRecord SQLインジェクションクイズ (Rails 7.1.3.4)

    問題 ActiveRecordクイズです。SQLインジェクション可能なのはどれでしょう? (Railsバージョンは7.1.3.4、複数回答あり) 1️⃣ User.find_by(id: params[:id]) 2️⃣ User.where("id = #{params[:id]}") 3️⃣ User.order("id #{params[:order]}") 4️⃣ User.exists?(params[:id]) 正解と解説 SQLインジェクション可能なのは 2️⃣ と 4️⃣ 1️⃣ User.find_by(id: params[:id]) エスケープ処理が入るため これは安全な呼び出しです。 Railsガイドにも引用があります。 Model.find(id)やModel.find_by_*(引数)といったクエリでは自動的にこの対策が適用されます。 2️⃣ User.wher

    ActiveRecord SQLインジェクションクイズ (Rails 7.1.3.4)
    YassLab
    YassLab 2024/07/22
    “ユーザー入力を直接渡すな!という話はそれはそう。大前提としてそれはまず最初に守らなければならない / Brakemanというツールが最近気になっている。Railsに特化したセキュリティの静的解析ツールです。”
  • 1