- PR -

string及びstringBuilderのreplaceについて

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-01-24 06:13
 たぶん大丈夫だと思いますが、一応指摘しておきます。
引用:

Liquid_Forceさんの書き込み(2006-01-23 11:37)より:

private const SQL = "SELECT * FROM table WHERE aaa = '@aaa'"

Dim sbSQL As New StringBuilder(SQL,50)

sbSQL.Replace("@aaa",Cstr(Session("aaa")))


 SQL Injection の脆弱性を作り込んでいる可能性があります。文字列を置換するのではなく、パラメータを使いましょう。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-01-24 09:41
> Liquid_Forceさんの書き込み (2006-01-23 16:41) より:
> stringBuilderも同様に戻り値を再設定してませんでした。

StringBuilderは戻り値をとらなくてもできるはずなんだが・・・
どうやって間違えているのか気になる。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-01-24 09:53
引用:
StringBuilderは戻り値をとらなくてもできるはずなんだが・・・

そのとおりですね。

recordCountメソッドを抜けてから値を確認しているのならByValなので値は変わらない
ですよね。ByRefにしたとしてもconstなので値は変わらないですよね。
でもだとするとこうしてもおなじはずか・・
sql = sql.Replace("@aaa","MakiMakiLove")
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2006-01-24 10:42
引用:

StringBuilderは戻り値をとらなくてもできるはずなんだが・・・


ぉあっ、ほんとだ。ヾ(_ _。)

# 知らなかった自分に(恥)
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-24 11:46
先にあげた私のサンプルコードでは敢えて
StringBuilder.Replace の戻り値を取得していませんw

元が Const であるとか関係なく加工したものを使うハズですから、
おかしいなぁとは私も思って見守っていました。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)