JSON расшифровывается как JavaScript Object Notation.
Это популярный формат обмена данными, который находит множество применений.
В этой статье мы рассмотрим, как использовать JSON.
Схемы JSON
Мы можем проверить значение схем JSON, чтобы проверить правильность наших типов данных.
Также мы можем проверить, есть ли у нас необходимые данные.
И мы проверяем, соответствуют ли значения тому формату, который нам нужен.
Например, если у нас есть:
{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "Person", "properties": { "name": { "type": "string" }, "age": { "type": "number", "description": "Your person's age in years." }, "gender": { "type": "string" }, "description": { "type": "string" } }, "required": [ "name", "age", "gender" ] }
тогда у нас есть схема Person
, которая имеет name
с типом string
.
Свойство age
имеет тип number
.
gender
относится к типу string
, а description
также относится к типу string
.
Кроме того, у него есть свойство required
, которое содержит массив требуемых свойств.
Например, если у нас есть:
{ "name": "james", "age": 2, "gender": "male" }
тогда он соответствует схеме, которую мы только что создали выше.
Мы можем добавить дополнительную проверку в нашу схему.
Мы можем установить минимальное допустимое количество для age
.
Например, мы можем написать:
{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "Person", "properties": { "name": { "type": "string" }, "age": { "type": "number", "description": "Your person's age in years.", "minimum": 0 }, "gender": { "type": "string" }, "description": { "type": "string" } }, "required": [ "name", "age", "gender" ] }
чтобы установить минимально допустимое значение для age
.
Затем, если мы хотим проверить объект на соответствие нашей схеме, мы можем перейти на https://www.jsonschemavalidator.net/.
Если у нас есть что-то, что не соответствует указанной нами схеме, мы увидим ошибки.
Мы помещаем объект схемы слева, а объект JSON, который мы хотим проверить, справа.
Безопасность JSON
Поскольку мы используем JSON для связи между двумя или более сторонами, нам нужно позаботиться о безопасности.
Все, что обменивается данными по сети, будет иметь риски для безопасности.
Есть разные виды атак, о которых мы должны беспокоиться.
Подделка межсайтовых запросов (CSRF)
Один из видов атак, о котором мы должны беспокоиться, - это подделка межсайтовых запросов.
Здесь атака направляется на сайт, который уже аутентифицирован законным пользователем.
Таким образом, злоумышленник может видеть конфиденциальные данные на сайте.
Злоумышленники могут получить доступ к сайтам, требующим аутентификации, поскольку файлы cookie включены в запросы, поэтому они могут перехватывать их и использовать для аутентификации.
Невозможно отличить законные запросы от поддельных, если только для их различения не используется токен CSRF.
Большинство веб-фреймворков имеют встроенную защиту от этой атаки, чтобы остановить эту атаку.
Заключение
Мы можем проверять схемы JSON на соответствие нашим объектам JSON, чтобы с их помощью проверять наши объекты.
Кроме того, мы должны быть осторожны с CSRF-атаками, чтобы злоумышленники не могли получить доступ к конфиденциальным данным с помощью поддельных запросов.