次のような変数にLIKE
SQLステートメントが格納されているとします。
$movie_title = $_POST['movie_title'];
$query= "SELECT movie FROM movies WHERE title LIKE '%" . $movie_title . "%'";
%
ワイルドカードをエスケープすることで、SQLインジェクション攻撃のどのインスタンスを防ぐことができ_
ますか?
次のような変数にLIKE
SQLステートメントが格納されているとします。
$movie_title = $_POST['movie_title'];
$query= "SELECT movie FROM movies WHERE title LIKE '%" . $movie_title . "%'";
%
ワイルドカードをエスケープすることで、SQLインジェクション攻撃のどのインスタンスを防ぐことができ_
ますか?
PDOの使用:
$pdo = new PDO(/* db info */);
$original = $_POST['movie_title'];
$wildcarded = '%'.$original.'%';
$stmt = $pdo->prepare('SELECT movie FROM movies WHERE title LIKE :var');
$stmt->bindParam(':var', $wildcarded);
$stmt->execute();
// fetching and stuff...
非常に簡単:
次のような関数を記述します。
function sqlwildcardesc($x){
return str_replace(array("%", "_"), array("\\%", "\\_"), mysql_real_escape_string($x));
}
今あなたのクエリ:
$query= "SELECT movie FROM movies WHERE title LIKE '%".sqlwildcardesc($movie_title)."%'";
これはうまくいくはずです!自分のプロジェクトでテストしました!! 楽しんで ;)