Да.Это опасно.
JSON может включать одинарные кавычки в строковые значения (их не нужно экранировать).Смотрите "следы" на json.org .
. Представьте, что данные:
{"pwned": "you' & kill world;"}
Счастливое кодирование.
Я бырассмотрите возможность передачи данных в соответствующую программу (например, используйте "popen"
или даже версию "exec"
, которая передает аргументы напрямую) - это может избежать проблем, возникающих, например, при прохождении через оболочку.Как и в SQL: использование заполнителей устраняет необходимость в мелочах с «экранированием».
Если прохождение через оболочку является единственным способом, тогда это может быть вариантом (это не проверено, но что-тоаналогично для контекста ""):
Для каждого символа в JSON, который находится вне диапазона от "пробела" до "~" в ASCII или имеет особое значение в ''
контекст оболочки, такой как \
и '
(но исключая "
или любой другой символ - например, цифры), который может появляться вне «строковых» данных, которыеявляется ограничением этого тривиального подхода), затем закодируйте символ с помощью формы \uXXXX
JSON.(В соответствии с определенными выше ограничениями, это должно кодировать только потенциально опасные символы, появляющиеся в «строках» в JSON, и не должно быть пар \\
, ни конечных \
, ни '
s и т. Д.)