10

Пишу API, требуется обезопасить его от SQL инъекций. Как лучше и проще защититься от них?

Данные приходят в формате JSON и обрабатываются функцией json_decode(); После чего:

  1. Используются в запросах как числа: "... WHERE id='{$id}' ". Требуется функция, которая проверит, что это $id целое число. Или вернет число, к примеру: $id = real_int($id); В результате должно состоять из знака минуса или символов 0-9.

  2. Используются как строки: "... '{$text}' ... ". По идее тут достаточно заменить ' на \', хотя помнится были варианты обхода такой защиты. В общем тоже нужна функция, которая надежно защитит от инъекций.

  3. Используются как список идентификаторов: "... WHERE id IN({$ids}) ". Полагаю их проще распарсить и каждый id обработать функцией из первого пункта.

mikelsv
  • 3,046
  • 1
  • 20
  • 48
  • 2
  • Используйте хотя бы PDO | 2. Поставьте доктрину и не задумывайтесь о таких вещах вообще.
  • – etki May 06 '15 at 00:00
  • 1
    Есть варианты без PDO? В моем случае проще прогнать входящие параметры через функции, чем использовать кучу лишнего кода для работы с PDO. – mikelsv May 06 '15 at 01:43
  • 2
    Это не лишний код. – etki May 06 '15 at 03:26
  • Если без него можно обойтись, он лишний. ) – mikelsv May 06 '15 at 04:04
  • 1
    @mikelsv по этой парадигме php сам по себе лишний – etki May 06 '15 at 07:59
  • 1
    Если вам дан исчерпывающий ответ, отметьте его как верный (галка напротив выбранного ответа). – Nicolas Chabanovsky May 06 '15 at 08:56