экранировать все данные в объекте - PullRequest
0 голосов
/ 01 марта 2012

У меня есть объект с некоторыми данными, которые публикуются в php-скрипте из javascript. Эти данные поступают из for, поэтому пользователь получит форму, когда он нажмет, введите Ajax-скрипт, возьмет базу данных формы, поместит ее в объект, а затем отправит в мой php, кодирующий его с помощью JSON.

Теперь я новичок в таких вещах, как JSON, так что я не на 100% уверен в том, что он делает, я немного читал в Интернете, и я пришел к выводу, что он кодирует данные с помощью универсальной кодировки, которую имеют все языки программирования. .... Может быть, не лучшее описание этого, но эй. Значит, это не то же самое, что экранирование данных?

Любой, прежде чем я обработаю данные и внесу их в базу данных, я хочу избежать их, но я не уверен, что это лучший способ? Есть ли способ, которым я мог бы избежать объекта дыры? Какие-нибудь советы или хитрости для такого рода вещей?

Ответы [ 3 ]

1 голос
/ 01 марта 2012

JSON действительно является «универсальным» в том смысле, что по умолчанию это UTF-8, а многобайтовые последовательности экранируются в формате \uuuuu.

Однако, если вы хотите сохранить весь объект JSON в базе данных как есть, это не избавляет от необходимости экранировать всю строку перед ее вставкой в ​​базу данных, используя функцию экранирования строк вашей базы данных. (или параметризованные запросы, если ваша библиотека их поддерживает).

1 голос
/ 01 марта 2012

Кодирование чего-либо в JSON - это не то же самое, что экранирование. По сути, JSON - это формат сериализации, основанный на литералах объектов Javascript. Так что на стороне PHP вам нужно:

  1. Декодирование JSON в PHP
  2. Подтвердить вейлы
  3. Выход из значений
  4. Вставьте значения в вашу базу данных

После того, как вы декодируете JSON, у вас останется массив (см. json_decode и передайте true в качестве второго аргумента, чтобы убедиться, что это массив, а не микрофон stdObject и массивов). *

Таким образом, вы можете извлечь данные, которые вам понадобились, и экранировать их, как обычно любой массив, переданный вам через $_POST до вставки.

1 голос
/ 01 марта 2012

Нет, jsons вообще не сбежали. На стороне PHP вы можете использовать json_decode для извлечения декодированной формы данных, после чего вы получите доступ ко всему исходному свойству объекта в виде массива PHP.

...