
No.1ベストアンサー
- 回答日時:
SQLインジェクションを学ぶといいかと思います。
PHPの場合、
DELETE FROM Table1 WHERE Column1 = $postData
というSQLを安全ではない方法で発行した場合、
$postDataに『1 OR 1=1』が渡ってくると、下記のSQLが発行されることになります。
DELETE FROM Table1 WHERE Column1 = 1 OR 1=1
これはつまり、Table1内の全レコードが削除対象になります。
Column1の条件が合致せずとも、1=1により条件に合致するレコードになるからです。
同様に、
DELETE FROM Table1 WHERE Column1 = '$postData'
というSQLだったとしても、$postDataに『' OR 1=1 --』が渡ってくると、下記のSQLが発行されることになり、全レコードが削除対象になります。
DELETE FROM Table1 WHERE Column1 = '' OR 1=1 --'
プリペアドステートメントと呼ばれる方法でSQLを発行した時は、
$postDataに『1 OR 1=1』が渡ってくると、下記のSQLが発行されることになります。
DELETE FROM Table1 WHERE Column1 = '1 OR 1=1'
Column1にそんな文字列は存在しないため、削除対象になりません。
最も単調なセキュリティに関わることなので、理由を知らずにコードするものではありません。
この回答へのお礼
お礼日時:2022/02/15 07:14
ご回答くださいまして、ありがとうございました。
難しいことは まだわからないのですが
「SQLインジェクション」ですが、現在著書のP.462に入り
まさに それに突入しています。
手が空き次第 ちゃんとご回答します。
しばらくお待ちください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBscriptで文字サイズを指定で...
-
VB6.0のString関数に代わるVB20...
-
エクセルで文字列の最大値を抽...
-
Excelで指数表現しないようにす...
-
文字列からタブコードを取り除...
-
【Excel VBA】複数ある特定の文...
-
エクセル 数値データを桁をそ...
-
“丸(〇/○/◯)”に似た文字…
-
VBAでの Replace関数で、ワイル...
-
VBの「As String * 128」とは?
-
C#で年月を比較する
-
Excelで3E8を3.00E+8にしない方...
-
MS SQLServer のSQLで文字列の...
-
ACCESSのSQLでのカンマ’認識に...
-
Windowsでファイルのリネームで...
-
VBAで、セルの一部の文字色を変...
-
エクセルで文字列をtxtファイル...
-
VBA shellでメールを作成した際...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
エクセルで文字列をtxtファイル...
-
エクセルで文字列の最大値を抽...
-
VBの「As String * 128」とは?
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
Excelで指数表現しないようにす...
-
Excelで3E8を3.00E+8にしない方...
-
Left関数とRight関数を合わせた...
-
エクセル 数値データを桁をそ...
-
アクセスで特定の数字以外(複...
-
【Excel VBA】複数ある特定の文...
-
エクセルでセル内の文字列の最...
-
OnTime 使用時のプロシージャへ...
-
LEFT関数で文字数を指定しない...
-
VBAを使って選択した範囲の数字...
-
Msgboxの×が押されたとき
おすすめ情報