dポイントプレゼントキャンペーン実施中!

PHPだけかわかりませんが! 掲示板レベルでの「削除キーが構築」
されている場合 1 OR 1=1 この 文字列を送信した場合
 全部の データが 消えると 著書にあります。

OR演算子 ですが どんな論理(約束事) で 全部消えるのでしょうか?
著書には そこまで 書いてありませんでした。

 まー 知らなくても バカおぼで応用はできそうですが

よろしくお願いいたします。

A 回答 (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にそんな文字列は存在しないため、削除対象になりません。

最も単調なセキュリティに関わることなので、理由を知らずにコードするものではありません。
    • good
    • 1
この回答へのお礼

ご回答くださいまして、ありがとうございました。
 難しいことは まだわからないのですが
「SQLインジェクション」ですが、現在著書のP.462に入り
まさに それに突入しています。

 手が空き次第 ちゃんとご回答します。
しばらくお待ちください。

お礼日時:2022/02/15 07:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!