вівторок, 10 лютого 2009 р.

Лапки в PHP і SQL: чому addslashes недостатньо

Близько години я провозився з проблемою в PHP: проєкт, над яким працював кілька днів, раптом перестав показувати результат. На сторінці не було ані даних, ані видимого повідомлення про помилку. Спочатку підозрював незакриті дужки, але зрештою пов’язав збій зі значенням із лапками, яке вставив до бази даних.

Чому addslashes не є загальним рішенням для SQL

У початковій нотатці як загальне рішення пропонувалася addslashes(). Цю пораду потрібно уточнити: функція додає зворотні скісні риски перед певними символами, але не є універсальним екрануванням SQL і не слугує належною заміною параметризованим запитам.

Окремі правила для SQL і HTML

Для значень у SQL використовуйте підготовлені вирази та параметри відповідного драйвера, наприклад PDO. Для виведення звичайного тексту в HTML потрібна окрема обробка, зокрема htmlspecialchars(); правила одного контексту не можна автоматично переносити в інший.

Спочатку встановіть причину помилки

Порожня сторінка також сама по собі не доводить помилку з лапками: причину потрібно встановлювати за діагностикою. Довідка: addslashes, PDO::prepare, htmlspecialchars.

Немає коментарів:

K2 відкрила курс з ERP: 61 урок, практика й сертифікат

Перший день у новій ERP часто починається з пошуку потрібної кнопки. Наступний виклик складніший: зрозуміти, що зміниться після натискання. ...