Как я могу защитить этот код от SQL Injection? Немного смущен

Я читал разные источники, но я не уверен, как реализовать их в моем коде. Мне было интересно, может ли кто-нибудь дать мне быструю руку? Как только мне показали, как это сделать в моем коде, я смогу забрать его, я думаю! Это из автозаполнения AJAX, которое я нашел в сети, хотя я видел, что это связано с тем, что он уязвим для SQL Injection из-за «% $ queryString%» или чего-то еще? Любая помощь действительно ценится!

if ( isset( $_POST['queryString'] ) ) { $queryString = $_POST['queryString']; if ( strlen( $queryString ) > 0 ) { $query = "SELECT game_title, game_id FROM games WHERE game_title LIKE '%$queryString%' || alt LIKE '%$queryString%' LIMIT 10"; $result = mysql_query( $query, $db ) or die( "There is an error in database please contact support@laglessfrag.com" ); while ( $row = mysql_fetch_array( $result ) ) { $game_id = $row['game_id']; echo '<li onClick="fill(\'' . $row['game_title'] . '\',' . $game_id . ');">' . $row['game_title'] . '</li>'; } } } 

Инъекционная уязвимость заключается в том, что вы передаете предоставленные пользователем данные прямо в запрос без его очистки. В частности, эта строка проблематична:

 $queryString = $_POST['queryString']; 

Если вы используете функцию mysql_real_escape_string() вокруг $_POST['queryString'] , это не позволит пользователям вставлять свой собственный код.

 $queryString = mysql_real_escape_string($_POST['queryString']); 

Используйте mysql_real_escape_string () для всех значений из ненадежных источников, прежде чем конкатенировать значение в строку запроса. (Как правило, если вы не усложнили код в строке запроса, убегите от него). Например:

 $queryString = mysql_real_escape_string($_POST['queryString']); $query = "SELECT game_title, game_id " . "FROM games " . "WHERE game_title LIKE '%".$queryString."%'" . "|| alt LIKE '%".$queryString."%' " . "LIMIT 10"; 

Часто проще использовать адаптер mysql, который поддерживает подготовленные операторы, которые заставляют забывать о том, чтобы санировать ввод намного сложнее. Например, PHP имеет pdo или mysqli