「SQLコマンドインジェクション自爆」へのコメント
「水無月ばけらのえび日記 : SQLコマンドインジェクション自爆」について、11件のコメントが書かれています。
[1461] Re: えび日記 : 「SQLコマンドインジェクション自爆」
y-Aki (2004年1月9日 9時17分)
JavaでいうPreparedStatementみたいなのはないんですかねぇ。
http://msdn.microsoft.com/library/default.asp?
url=/library/en-us/cpguide/html/cpconsecureadonetcodingguidelines.asp
より
Dim selectString As String = "SELECT * FROM Customers WHERE CustomerID = @CustomerID"
Dim cmd As SqlCommand = New SqlCommand(selectString, conn)
cmd.Parameters.Add("@CustomerID", SqlDbType.VarChar, 5).Value = custID
VBで、しかも、DataTable使ってませんが…^^;
[1462] Re: えび日記 : 「SQLコマンドインジェクション自爆」
asa (2004年1月9日 10時15分)
>Dim selectString As String = "SELECT * FROM Customers WHERE CustomerID = @CustomerID"
>
>Dim cmd As SqlCommand = New SqlCommand(selectString, conn)
>cmd.Parameters.Add("@CustomerID", SqlDbType.VarChar, 5).Value = custID
>
上記のようなparameterで私は回避してます。シングルコーテーションがそのまま登録できるのでINSERTなどはさらに楽です。
[1463] Re: えび日記 : 「SQLコマンドインジェクション自爆」
えむけい (2004年1月9日 12時10分)
ようするに【謎】HTMLの「DOMを使う」に相当する解決策があることを分かればよろしい【謎】。
[1464] Re: えび日記 : 「SQLコマンドインジェクション自爆」
えむけい (2004年1月9日 12時21分)
>ようするに【謎】HTMLの「DOMを使う」に相当する解決策があることを分かればよろしい【謎】。
http://www.ipa.go.jp/security/awareness/vendor/programming/a02_01.html
スターダストさん【誰】もベタほめのIPAのサイトにも「バインドを使え」と思いっきり書かれてますね。
[1465] Re: えび日記 : 「SQLコマンドインジェクション自爆」
ばけら (2004年1月9日 13時44分)
うーん、しかし真性の SQL サーバではなくて、XML から読んだデータをメモリ上で DataTable に格納してるだけなんですよね。
で、DataTable の Select メソッドには string しか渡せないですし、バインドっぽいものがなさそうな感じなのですが……。
[1467] Re: えび日記 : 「SQLコマンドインジェクション自爆」
岩本隆史 (2004年1月10日 0時59分)
の解説に「引数 filterExpression を作成するには、フィルタを作成するときに DataColumn クラスの Expression プロパティの値に適用する規則と同じ規則を使用します」とあります。
見当外れでしたら申し訳ありません。
[1469] Re: えび日記 : 「SQLコマンドインジェクション自爆」
ばけら (2004年1月13日 10時24分)
見当外れどころかまさにそれなのですが、そこに出てる文字全部ひとつずつエスケープしなきゃならんのかいな、という感じでして……。
[1470] Re: えび日記 : 「SQLコマンドインジェクション自爆」
岩本隆史 (2004年1月13日 12時56分)
> 見当外れどころかまさにそれなのですが、そこに出てる文字全部ひとつずつエスケープしなきゃならんのかいな、という感じでして……。
その意味でルート記事を書かれたのですね。失礼いたしました。
列名のサニタイズが必要な場合、
1. 「]」を「\]」に置換
2. 全体を「[」と「]」で囲む
で終りではないでしょうか。
「ユーザー定義の値(文字列値)」であれば、
1. 「'」を「''」に置換
2. 全体を「'」と「'」で囲む
と。
[1473] Re: えび日記 : 「SQLコマンドインジェクション自爆」
ばけら (2004年1月13日 14時2分)
>「ユーザー定義の値(文字列値)」であれば、
> 1. 「'」を「''」に置換
> 2. 全体を「'」と「'」で囲む
>と。
LIKE を使わない場合は * や % や [] は処理しなくて良いのでしょうか。その辺がイマイチ謎ですが……。
まあ色々試してみますか。
[3807] 未承認メッセージ (投稿元:85.114.178.83)
ufgzrt hbfrclv (2006年8月19日 11時29分)
(この記事は承認されていないため、管理者が許可するまで公開されません。)
[3808] 未承認メッセージ (投稿元:220.88.111.89)
zcdksnwh nvfsohupy (2006年8月19日 11時29分)
(この記事は承認されていないため、管理者が許可するまで公開されません。)
「水無月ばけらのえび日記 : SQLコマンドインジェクション自爆」についてコメントを書く場合は、以下のフォームに記入してください。