Является ли плохой практикой использование array_walk с mysqli_real_escape_string? - PullRequest
0 голосов
/ 31 октября 2019

Итак, у меня есть функция с именем escape, которая выглядит следующим образом:

function escape($string){
    $escaped_string = mysqli_real_escape_string($this->conn, $string);
    return $escaped_string;
}

Я перед выполнением запроса посылаю сюда переменную (очевидно, полученную из пользовательского ввода), поэтому ее экранировали по соображениям безопасности.

Теперь я знаю, что можно использовать array_walk для применения массива значений к этой функции, но я просто хочу знать, есть ли причина, почему я не должен? Я знаю, что это звучит как глупый вопрос, но было бы неплохо и легко применить его к массиву введенных пользователем значений, а не к каждой переменной.

Обычно, если при создании функции я буду делать это следующим образом:

function whatever($user_input){
    $user_input = $this->escape($user_input);
    $this->query("SELECT dog from pets where owner = '$user_input'");
     e.c.t. 
}

Но если у меня много введенных пользователем данных из формы, например, id, я просто передаю массив виспользуйте функцию array_walk для функции escape, чтобы избавить себя от хлопот. Но опять же, есть ли какая-то конкретная причина (с точки зрения безопасности), почему это не очень хорошая идея?

1 Ответ

3 голосов
/ 31 октября 2019

ДА, абсолютно

Практика - это реинкарнация печально известной функции " magic quotes ", которая когда-то была частью языка, но теперь, слава Богу, это не так.

Такой подход не принесет вам пользы, а только даст ложное представление о безопасности и без причины испортит ваши данные.

Вы должны использовать подготовленные операторы для всех взаимодействий с базами данных, в которых используются переменные PHP. Это единственное 100% безопасное решение, и оно делает данную функцию устаревшей.

Здесь у меня есть пример для запроса на выборку, использующий подготовленные операторы, https://phpdelusions.net/mysqli_examples/prepared_select

С помощью простой вспомогательной функции она превращается в гораздо более простое и чистое решение, чем этот беспорядок, основанный на экранировании

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...