お世話になります。
現在参考書を見ながらphpでMYSQLの勉強をしています。SQLインジェクションについて勉強しているとよくわからない文があったので質問します。
[まえがき]
$sql = "insert into diary values(null, '日付', '".$_POST['title']."', '".$_POST['body']. "楽しかった')";
とあります
そこでbodyの部分に');select.......と書き込むとデータベースの中身を覗かれる危険性があると書いています。
これらの対処法としてaddslashes関数を用いると良いと書いてありますがなぜこの関数を使えばよいかがよくわかりません。
[質問]
addslashes関数を用いると'や"の前に\が入ることはわかります。これは先程の');select.......の部分の'に当たる箇所に\を追加することで'でかこらせないようにすることで第三者の入力の対策としているのでしょうか。
また上記に例として記載した内容についても質問があります。
'".$_POST['title']."'とありますがこれでは一番外側に'があるので中身の変数などは展開せずに実際読み込まれるときは.$_POST['title'].となるようように思います。
実際に$_POSTではなく変数でこの動きを再現してみましたが私の予想したとおりに.$_POST['title'].と表示されました。
これは参考書のミスか私の考えが間違っているのかわかりません。
どなたかご教授お願いします。
回答1件
あなたの回答
tips
プレビュー