Защита от инъекций

271
10 июня 2017, 16:23

Есть форма. Передает данные методом POST
В файле куда отправляются данные, такой код:

//инклудится файл подключения к БД...... потом
    $name = $_POST[name];
//и потом всяческие проверки на то, что в этой переменной содержится.`

Запросы к базе составляются так

mysqli_query($bd, "SELECt......")

А если пользователь отправит инъекцию, она ведь получается успешно выполнится до проверок? Или я ошибаюсь? Если нет, то как можно предотвратить?

Answer 1

Используйте подготовленные запросы.

Значения привязанных к запросу переменных сервер экранирует автоматически.

$stmt = mysqli_prepare($db, "SELECT code, country FROM table WHERE name=?";
mysqli_stmt_bind_param($stmt, "s", $name);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $code, $country);
mysqli_stmt_fetch($stmt);
echo "city: $name, code: $code, country: $country";
READ ALSO
move_uploaded_file: failed to open stream: permission denied

move_uploaded_file: failed to open stream: permission denied

Нужно загрузить картинку на сервер но при переносе выдает ошибку

269
Правильная реализация long-polling

Правильная реализация long-polling

Наткнулся на код сервера, предназначение которого обеспечение ajax + long polling запросы к серверу

263
Как заменить слова при авторизации

Как заменить слова при авторизации

Чтоб при авторизации,выводился email вместо sign in, когда пользователь авторизировался

217
Где ошибка в запросе MYSQL?

Где ошибка в запросе MYSQL?

Выпадающий список берет ФИО и uid докторов из таблицы doctors

230