Вы просматриваете документацию 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 | Внутреннее имя политики. Значение атрибута При необходимости используйте элемент | Н/Д | Необходимый |
continueOnError | Установите значение Установите значение | ЛОЖЬ | Необязательный |
enabled | Установите значение Установите значение | истинный | Необязательный |
async | Этот атрибут устарел. | ЛОЖЬ | Устарело |
Элемент <DisplayName>
Используйте в дополнение к атрибуту name
, чтобы пометить политику в редакторе прокси-сервера пользовательского интерфейса управления другим именем на естественном языке.
<DisplayName>Policy Display Name</DisplayName>
По умолчанию | Н/Д Если вы опустите этот элемент, будет использовано значение атрибута |
---|---|
Присутствие | Необязательный |
Тип | Нить |
Элемент <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 . | build |
steps.jsonthreatprotection.SourceUnavailable | 500 | Эта ошибка возникает, если переменная сообщения , указанная в элементе <Source> , имеет одно из следующих значений:
| build |
steps.jsonthreatprotection.NonMessageVariable | 500 | Эта ошибка возникает, если для элемента <Source> установлена переменная, которая не имеет типа message . | build |
Ошибки развертывания
Никто.
Переменные неисправности
Эти переменные устанавливаются, когда эта политика вызывает ошибку. Дополнительные сведения см. в разделе Что нужно знать об ошибках политики .
Переменные | Где | Пример |
---|---|---|
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, чтобы привести к сбою службы и вызвать атаки типа «отказ в обслуживании» на уровне приложения. Все настройки являются необязательными и должны быть настроены для оптимизации требований к вашим услугам от потенциальных уязвимостей.