Нужно ли мне избегать моих переменных, если я использую подготовленные операторы MySQLi?

Если я использую подготовленные MySQLi заявления, как показано ниже:

$stmt = $con1->prepare("UPDATE Login SET Session='LoggedOut' where Session=?"); $stmt->bind_param('s',$Session); $stmt->execute(); $stmt->close(); 

Мне все еще нужно избегать моих переменных, таких как $Session с mysqli_real_escape_string(); как показано ниже:

 $Session = mysqli_real_escape_string($con1, $_COOKIE['Session']); $stmt = $con1->prepare("UPDATE Login SET Session='LoggedOut' where Session=?"); $stmt->bind_param('s',$Session); $stmt->execute(); $stmt->close(); 

Нет, если вы используете готовые заявления повсюду в своем приложении, вы можете быть в безопасности от SQL-инъекций. Однако важной «добычей» является атака инъекций 2-го порядка, которая возникает, когда в некоторых запросах используются подготовленные заявления, а другие нет.

Согласно этому ответу аналогичного вопроса о SO:

подготовленные операторы / параметризованные запросы достаточны для предотвращения инъекции 1-го порядка в этом утверждении. Если вы используете неуправляемый динамический sql где-либо еще в своем приложении, вы все еще уязвимы для инъекции 2-го порядка.

Таким образом, подготовленные операторы создают разделение между отправляемыми данными и самим запросом SQL, гарантируя, что данные не могут быть неверно истолкованы как SQL-запрос. Тем не менее, злоумышленник все равно может вводить SQL в качестве данных, и хотя он не будет выполняться, когда он будет сначала сохранен, если вы используете подготовленные инструкции, вы все равно должны соблюдать осторожность при получении указанных результатов. Подготовленные заявления защищают ваше приложение в этом конкретном месте, но поскольку SQL по-прежнему разрешено хранить в базе данных, ваше приложение небезопасно, если вы позже используете эти данные без параметризации.

Нет, нет.

Это единственный ответ, который вам нужен.

Все путаные разговоры в другом ответе просто неактуальны. Парень пытается сказать вам, что если вы достаточно глупы, чтобы не использовать готовые заявления повсюду, тогда вы в опасности. Это совершенно очевидно и не относится к самому подготовленному заявлению.