« Ruby on Rails 「XSS」対策 | メイン | デフォルトゲートウェイの設定 »

Ruby on Rails 「SQLインジェクション : SQL Injection」対策

RailsではActiveRecordがクエリのプレースフォルダ機能を提供しています。プレースフォルダとは、SQLコマンドと実際の値を分離する方法で、SQL中には「この部分に変数が入ります」と言う宣言をしておいて、クエリ実行時に変数を渡して内部的に完全なクエリを作成します。

ActiveRecordには、DBIで使われている'?'パラメータ記法と、名前付きパラメータ記法の2種類のプレースフォルダがあります。

'?'パラメータ
Food.find(:all, :conditions=>["name = ?", params[:name]])

名前付きパラメータ
Food.find(:all, :conditions=>["name = :name", :name=>params[:name]])

どちらの場合も、ActiveRecordが内部的に、引数をサジタイニングして取得クエリを作成&実行してくれます。



トラックバック

このエントリーのトラックバックURL:
http://synth.jp/pg/mt-tb.cgi/1156

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

カレンダー


2007年06月
Su Mo Tu We Th Fr Sa
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Map

About

2007年05月29日 13:46に投稿されたエントリーのページです。

ひとつ前の投稿は「Ruby on Rails 「XSS」対策」です。

次の投稿は「デフォルトゲートウェイの設定」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。