В українському тексті апостроф нерідко вводять символом одинарної лапки '. Якщо такий текст безпосередньо вставити в SQL-рядок, лапка може передчасно завершити літерал і зламати запит.
У відповідному синтаксисі SQL одиничну лапку всередині рядкового літерала подають двома послідовними одинарними лапками. Це не заміна символу на подвійну лапку ". Водночас ручна обробка лапок не є універсальним способом побудови запитів.
Історичні функції системи
У старій «Корпорація 2» використовувалися такі виклики:
$GLOBALS["c"]->ec('Текст')
$GLOBALS["c"]->dc('Текст')
$GLOBALS["c"]->ec_simple('Текст')
$GLOBALS["c"]->dc_simple('Текст')За первісним описом, ec поєднувала перетворення кодування сайту в кодування бази з обробкою лапок. dc була описана як функція декодування, також з обробкою лапок, а варіанти з суфіксом _simple — як перетворення кодування без заміни лапок.
Напрямок перетворення для dc і dc_simple у вихідному тексті сформульовано суперечливо. Без реалізації цих функцій не можна достовірно встановити їхню поведінку. Так само обробка для SQL не забезпечує автоматично правильного екранування для PHP, JavaScript або HTML: це різні контексти.
Побудова нових запитів
Для значень у запитах PHP використовуйте підготовлені вирази й параметри, наприклад PDO. Параметри призначені для значень, а не для назв таблиць, стовпців чи довільних частин SQL. Див. PDO::prepare. Історичні функції вище не слід вважати перевіреним захистом від SQL-ін'єкцій.
Немає коментарів:
Дописати коментар