回答編集履歴
3
文章しゅうせいだぞ
answer
CHANGED
@@ -37,7 +37,7 @@
|
|
37
37
|
|
38
38
|
みてぇになる。
|
39
39
|
|
40
|
-
これをオプティマイザが解析してクエリの実行計画を立てると、UPDATE文が意図せず無作為に実行れてデータベースが不正に書き換えられちまうって寸法だ。
|
40
|
+
これをオプティマイザが解析してクエリの実行計画を立てると、WHERE文がコメントアウトされたせいでUPDATE文が意図せず無作為に実行されてデータベースが不正に書き換えられちまうって寸法だ。
|
41
41
|
|
42
42
|
だけんども、今回発行してるクエリは
|
43
43
|
|
2
修正の修正だぞ。
answer
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
|
33
33
|
|
34
34
|
```
|
35
|
-
UPDATE Goods SET GoodsName='';---', Price=? WHERE GoodsID=?
|
35
|
+
UPDATE Goods SET GoodsName=''; ---', Price=? WHERE GoodsID=?
|
36
36
|
```
|
37
37
|
|
38
38
|
みてぇになる。
|
@@ -49,7 +49,7 @@
|
|
49
49
|
|
50
50
|
その後で、 ? の場所に値をバインドする。
|
51
51
|
|
52
|
-
既にクエリの実行計画は立ててあ
|
52
|
+
既にクエリの実行計画は立ててあっからおかしなUPDATE文が発行されちまう事は絶対にねぇ。
|
53
53
|
? の場所に値をバインドしてくだけだ。
|
54
54
|
|
55
55
|
SQLインジェクションってぇのは、構文も値も全部ひとかたまりの文字列としてデータベースに渡されて意図しない形で解析されっから起こる。
|
1
こっちのほうが分かりやしぃなぁ、
answer
CHANGED
@@ -25,19 +25,19 @@
|
|
25
25
|
例えばGoodsNameの値が
|
26
26
|
|
27
27
|
```
|
28
|
-
';
|
28
|
+
'; ---
|
29
29
|
```
|
30
30
|
|
31
31
|
だったりして、これが直接埋め込まれた場合、
|
32
32
|
|
33
33
|
|
34
34
|
```
|
35
|
-
UPDATE Goods SET GoodsName='';
|
35
|
+
UPDATE Goods SET GoodsName='';---', Price=? WHERE GoodsID=?
|
36
36
|
```
|
37
37
|
|
38
38
|
みてぇになる。
|
39
39
|
|
40
|
-
これをオプティマイザが解析してクエリの実行計画を立てると、
|
40
|
+
これをオプティマイザが解析してクエリの実行計画を立てると、UPDATE文が意図せず無作為に実行れてデータベースが不正に書き換えられちまうって寸法だ。
|
41
41
|
|
42
42
|
だけんども、今回発行してるクエリは
|
43
43
|
|