Политика JSONThreatProtection

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Что

Минимизирует риск, связанный с атаками на уровне контента, позволяя вам указывать ограничения для различных структур JSON, таких как массивы и строки.

Видео. Посмотрите короткое видео, чтобы узнать больше о том, как политика JSONThreatProtection позволяет защитить API от атак на уровне контента.

Видео: Посмотрите этот короткий видеоролик о платформе кросс-облачного API Apigee.

Ссылка на элемент

Ссылка на элемент описывает элементы и атрибуты политики JSONThreatProtection.

<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
   <DisplayName>JSONThreatProtection 1</DisplayName>
   <ArrayElementCount>20</ArrayElementCount>
   <ContainerDepth>10</ContainerDepth>
   <ObjectEntryCount>15</ObjectEntryCount>
   <ObjectEntryNameLength>50</ObjectEntryNameLength>
   <Source>request</Source>
   <StringValueLength>500</StringValueLength>
</JSONThreatProtection>

Атрибуты <JSONThreatProtection>

<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> 

В следующей таблице описаны атрибуты, общие для всех родительских элементов политики:

Атрибут Описание По умолчанию Присутствие
name

Внутреннее имя политики. Значение атрибута name может содержать буквы, цифры, пробелы, дефисы, подчеркивания и точки. Это значение не может превышать 255 символов.

При необходимости используйте элемент <DisplayName> , чтобы пометить политику в редакторе прокси-сервера пользовательского интерфейса управления другим именем на естественном языке.

Н/Д Необходимый
continueOnError

Установите значение false , чтобы возвращать ошибку в случае сбоя политики. Это ожидаемое поведение для большинства политик.

Установите значение true , чтобы выполнение потока продолжалось даже после сбоя политики.

ЛОЖЬ Необязательный
enabled

Установите значение true , чтобы обеспечить соблюдение политики.

Установите значение false , чтобы отключить политику. Политика не будет применена, даже если она останется привязанной к потоку.

истинный Необязательный
async

Этот атрибут устарел.

ЛОЖЬ Устарело

Элемент <DisplayName>

Используйте в дополнение к атрибуту name , чтобы пометить политику в редакторе прокси-сервера пользовательского интерфейса управления другим именем на естественном языке.

<DisplayName>Policy Display Name</DisplayName>
По умолчанию

Н/Д

Если вы опустите этот элемент, будет использовано значение атрибута name политики.

Присутствие Необязательный
Тип Нить

Элемент <ArrayElementCount>

Указывает максимальное количество элементов, разрешенное в массиве.

<ArrayElementCount>20</ArrayElementCount>
По умолчанию: Если вы не укажете этот элемент или укажете отрицательное целое число, система не будет применять ограничение.
Присутствие: Необязательный
Тип: Целое число

Элемент <ContainerDepth>

Указывает максимально допустимую глубину включения, где контейнерами являются объекты или массивы. Например, массив, содержащий объект, который содержит объект, будет иметь глубину включения 3.

<ContainerDepth>10</ContainerDepth>
По умолчанию: Если вы не укажете этот элемент или укажете отрицательное целое число, система не наложит никаких ограничений.
Присутствие: Необязательный
Тип: Целое число

Элемент <ObjectEntryCount>

Указывает максимальное количество записей, разрешенное в объекте.

<ObjectEntryCount>15</ObjectEntryCount>
По умолчанию: Если вы не укажете этот элемент или укажете отрицательное целое число, система не наложит никаких ограничений.
Присутствие: Необязательный
Тип: Целое число

Элемент <ObjectEntryNameLength>

Указывает максимальную длину строки, разрешенную для имени свойства внутри объекта.

<ObjectEntryNameLength>50</ObjectEntryNameLength>
По умолчанию: Если вы не укажете этот элемент или укажете отрицательное целое число, система не будет применять ограничение.
Присутствие: Необязательный
Тип: Целое число

Элемент <Источник>

Сообщение, которое будет проверено на наличие атак с использованием полезной нагрузки JSON. Чаще всего это значение request , так как вам обычно необходимо проверять входящие запросы от клиентских приложений. Если установлено значение message , этот элемент будет автоматически оценивать сообщение запроса при его присоединении к потоку запросов и ответное сообщение при присоединении к потоку ответов.

<Source>request</Source>
По умолчанию: запрос
Присутствие: Необязательный
Тип:

Нить.

Допустимые значения: запрос, ответ или сообщение.

Элемент <StringValueLength>

Указывает максимальную длину, разрешенную для строкового значения.

<StringValueLength>500</StringValueLength>
По умолчанию: Если вы не укажете этот элемент или укажете отрицательное целое число, система не будет применять ограничение.
Присутствие: Необязательный
Тип: Целое число

Ссылка на ошибку

В этом разделе описаны коды ошибок и сообщения об ошибках, которые возвращаются, а также переменные ошибок, которые устанавливаются Edge, когда эта политика вызывает ошибку. Эту информацию важно знать, если вы разрабатываете правила обработки ошибок. Дополнительные сведения см. в разделах Что нужно знать об ошибках политики и Обработка ошибок .

Ошибки выполнения

Эти ошибки могут возникнуть при выполнении политики.

Код неисправности Статус HTTP Причина Исправить
steps.jsonthreatprotection.ExecutionFailed 500 Политика JSONThreatProtection может вызывать множество различных типов ошибок ExecutionFailed. Большинство этих ошибок возникает при превышении определенного порога, установленного в политике. К этим типам ошибок относятся: длина имени записи объекта , количество записей объекта , количество элементов массива , глубина контейнера , длина строкового значения . Эта ошибка также возникает, когда полезные данные содержат недопустимый объект JSON .
steps.jsonthreatprotection.SourceUnavailable 500 Эта ошибка возникает, если переменная сообщения , указанная в элементе <Source> , имеет одно из следующих значений:
  • Вне области действия (недоступно в конкретном потоке, в котором выполняется политика)
  • Не является одним из допустимых значений request , response или message
steps.jsonthreatprotection.NonMessageVariable 500 Эта ошибка возникает, если для элемента <Source> установлена ​​переменная, которая не имеет типа message .

Ошибки развертывания

Никто.

Переменные неисправности

Эти переменные устанавливаются, когда эта политика вызывает ошибку. Дополнительные сведения см. в разделе Что нужно знать об ошибках политики .

Переменные Где Пример
fault.name=" fault_name " fault_name — это имя ошибки, как указано в таблице ошибок времени выполнения выше. Имя неисправности — это последняя часть кода неисправности. fault.name Matches "SourceUnavailable"
jsonattack. policy_name .failed policy_name — указанное пользователем имя политики, вызвавшей ошибку. jsonattack.JTP-SecureRequest.failed = true

Пример ответа об ошибке

{
  "fault": {
    "faultstring": "JSONThreatProtection[JPT-SecureRequest]: Execution failed. reason: JSONThreatProtection[JTP-SecureRequest]: Exceeded object entry name length at line 2",
    "detail": {
      "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
    }
  }
}

Пример правила неисправности

<FaultRule name="JSONThreatProtection Policy Faults">
    <Step>
        <Name>AM-CustomErrorResponse</Name>
        <Condition>(fault.name Matches "ExecutionFailed") </Condition>
    </Step>
    <Condition>(jsonattack.JPT-SecureRequest.failed = true) </Condition>
</FaultRule>

Схемы

Примечания по использованию

Как и службы на основе XML, API, поддерживающие нотацию объектов JavaScript (JSON), уязвимы для атак на уровне контента. Простые атаки JSON пытаются использовать структуры, которые перегружают анализаторы JSON, чтобы привести к сбою службы и вызвать атаки типа «отказ в обслуживании» на уровне приложения. Все настройки являются необязательными и должны быть настроены для оптимизации требований к вашим услугам от потенциальных уязвимостей.

Связанные темы

Политика JSONtoXML

Политика XMLThreatProtection

Политика RegularExpressionProtection