1

次のような変数にLIKESQLステートメントが格納されているとします。

$movie_title = $_POST['movie_title'];
$query= "SELECT movie FROM movies WHERE title LIKE '%" . $movie_title . "%'";

%ワイルドカードをエスケープすることで、SQLインジェクション攻撃のどのインスタンスを防ぐことができ_ますか?

4

2 に答える 2

2

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...
于 2012-05-21T07:55:26.623 に答える
0

非常に簡単:

次のような関数を記述します。

function sqlwildcardesc($x){
    return str_replace(array("%", "_"), array("\\%", "\\_"), mysql_real_escape_string($x));
}

今あなたのクエリ:

$query= "SELECT movie FROM movies WHERE title LIKE '%".sqlwildcardesc($movie_title)."%'";

これはうまくいくはずです!自分のプロジェクトでテストしました!! 楽しんで ;)

于 2014-04-26T23:54:20.567 に答える