
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ランキング
-
エクセルでアルファベットか数...
-
文字列からタブコードを取り除...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
複数文字列から共通文字列の抽...
-
エクセルで文字列の最大値を抽...
-
ACCESSのSQLでのカンマ’認識に...
-
(エクセル)複数のセルの数値...
-
EXCELで=より左の文字を一括で...
-
textboxユーザーコントロールの...
-
変数内に入った文字列の結合 UWSC
-
ORCLEでの小数の表示方法の変更...
-
Excelで3E8を3.00E+8にしない方...
-
エクセルで文字列をtxtファイル...
-
aaa.bbb.ccc という、「ドット...
-
エクセルでSQLでいうところの「...
-
Left関数とRight関数を合わせた...
-
Pro c/c++ でホスト変数の後に....
-
A B C D E の五文字のすべてを...
-
アクセスでのインポート時の改...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
エクセルで文字列をtxtファイル...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
Excelで指数表現しないようにす...
-
エクセルで文字列の最大値を抽...
-
VBの「As String * 128」とは?
-
VBA2005 16進を2桁で表示したい。
-
Excelで3E8を3.00E+8にしない方...
-
【Excel VBA】複数ある特定の文...
-
OnTime 使用時のプロシージャへ...
-
アクセスで特定の数字以外(複...
-
エクセル 数値データを桁をそ...
-
Msgboxの×が押されたとき
-
ORCLEでの小数の表示方法の変更...
-
VBAを使って選択した範囲の数字...
-
MS SQLServer のSQLで文字列の...
-
同一セル内に関数と文字列を同...
-
Pro c/c++ でホスト変数の後に....
おすすめ情報