Единственият начин е правилно да избягате от предоставените от потребителя данни. Други посочиха някои начини за това.
Има и друг начин:подготвени отчети и заместители. Подготвените изявления се поддържат от всеки модерен PHP интерфейс на база данни, включително mysqli и PDO .
Нека използваме PDO като демонстрация. Да приемем, че искаме да актуализираме малко данни в таблицата foo
подадена от потребител.
$sql = 'UPDATE foo SET bar = ? WHERE user_id = ?';
$sh = $db->prepare($sql);
$sh->execute(array( $_POST['bar'], $_SESSION['user_id'] ));
Променливите в масива се предават на execute
заменете заместителите на въпросителния знак в заявката. Когато това се случи, те автоматично се избягват и се цитират . Не е необходимо да ги избягвате ръчно, за да ги направите безопасни за поставяне в базата данни!
От друга страна, все пак ще трябва да ги филтрирате за неочаквано съдържание, като HTML, Javascript, букви, където очаквате цифри и т.н. Безопасността на данните за вмъкване в базата данни е само половината от битката .