このコードの例では、htmlspecialchar
はXSSを防止していますが、SQLインジェクションを防ぐPDOの準備文ですか?XSSとSQLインジェクションを防ぐためにPDO準備文とhtmlspecialcharsを使用していますか?
if(isset($_GET['search']) AND !empty($_GET['search']) AND $_GET['search'] != ' ') {
$search = htmlspecialchars($_GET['search']);
$searchArray = explode(' ',$search);
var_dump($searchArray);
$videos = $stdb->prepare('SELECT id, title, videoTime FROM videos WHERE title LIKE "%'.$search.'%" OR title LIKE "%'.implode("\" OR title LIKE \"%", $searchArray).'%" ORDER BY id DESC limit '.$start.','.$videosPerPage);
$videos->execute();
$totalVideos = $totalVideosReq->rowcount();
$totalPages = ceil($totalVideos/$videosPerPage);
$currentPage = 1;
if(isset($_GET['page']) AND !empty($_GET['page']) AND $_GET['page'] > 0 AND $_GET['page'] <= $totalPages) {
$_GET['page'] = intval($_GET['page']);
$currentPage = $_GET['page'];
} else{
$currentPage = 1;
}
}
あなたのコードはSQLインジェクション攻撃に対して脆弱です。準備されたステートメントを実際に使用する方法を学んでください。 –
ここをクリックしてください:http://php.net/manual/en/security.database.sql-injection.php – Bast
また読む価値がある:[SQLインジェクションとは何か](http://stackoverflow.com/documentation/ php/5828/pdo/2685/prevent-sql-injection-with-parameterized-queries)と[なぜ単独でエスケープするだけでは不十分なのですか](http://stackoverflow.com/documentation/php/2784/php-mysqli/12843/escaping-strings) – Machavity