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-атаками, чтобы злоумышленники не могли получить доступ к конфиденциальным данным с помощью поддельных запросов.