/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace WAFV2 { namespace Model { /** *

Inspect the body of the web request as JSON. The body immediately follows the * request headers.

This is used to indicate the web request component to * inspect, in the FieldToMatch specification.

Use the * specifications in this object to indicate which parts of the JSON body to * inspect using the rule's inspection criteria. WAF inspects only the parts of the * JSON that result from the matches that you indicate.

Example JSON: * "JsonBody": { "MatchPattern": { "All": {} }, "MatchScope": "ALL" } *

See Also:

AWS API * Reference

*/ class JsonBody { public: AWS_WAFV2_API JsonBody(); AWS_WAFV2_API JsonBody(Aws::Utils::Json::JsonView jsonValue); AWS_WAFV2_API JsonBody& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_WAFV2_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The patterns to look for in the JSON body. WAF inspects the results of these * pattern matches against the rule inspection criteria.

*/ inline const JsonMatchPattern& GetMatchPattern() const{ return m_matchPattern; } /** *

The patterns to look for in the JSON body. WAF inspects the results of these * pattern matches against the rule inspection criteria.

*/ inline bool MatchPatternHasBeenSet() const { return m_matchPatternHasBeenSet; } /** *

The patterns to look for in the JSON body. WAF inspects the results of these * pattern matches against the rule inspection criteria.

*/ inline void SetMatchPattern(const JsonMatchPattern& value) { m_matchPatternHasBeenSet = true; m_matchPattern = value; } /** *

The patterns to look for in the JSON body. WAF inspects the results of these * pattern matches against the rule inspection criteria.

*/ inline void SetMatchPattern(JsonMatchPattern&& value) { m_matchPatternHasBeenSet = true; m_matchPattern = std::move(value); } /** *

The patterns to look for in the JSON body. WAF inspects the results of these * pattern matches against the rule inspection criteria.

*/ inline JsonBody& WithMatchPattern(const JsonMatchPattern& value) { SetMatchPattern(value); return *this;} /** *

The patterns to look for in the JSON body. WAF inspects the results of these * pattern matches against the rule inspection criteria.

*/ inline JsonBody& WithMatchPattern(JsonMatchPattern&& value) { SetMatchPattern(std::move(value)); return *this;} /** *

The parts of the JSON to match against using the MatchPattern. * If you specify All, WAF matches against keys and values.

*/ inline const JsonMatchScope& GetMatchScope() const{ return m_matchScope; } /** *

The parts of the JSON to match against using the MatchPattern. * If you specify All, WAF matches against keys and values.

*/ inline bool MatchScopeHasBeenSet() const { return m_matchScopeHasBeenSet; } /** *

The parts of the JSON to match against using the MatchPattern. * If you specify All, WAF matches against keys and values.

*/ inline void SetMatchScope(const JsonMatchScope& value) { m_matchScopeHasBeenSet = true; m_matchScope = value; } /** *

The parts of the JSON to match against using the MatchPattern. * If you specify All, WAF matches against keys and values.

*/ inline void SetMatchScope(JsonMatchScope&& value) { m_matchScopeHasBeenSet = true; m_matchScope = std::move(value); } /** *

The parts of the JSON to match against using the MatchPattern. * If you specify All, WAF matches against keys and values.

*/ inline JsonBody& WithMatchScope(const JsonMatchScope& value) { SetMatchScope(value); return *this;} /** *

The parts of the JSON to match against using the MatchPattern. * If you specify All, WAF matches against keys and values.

*/ inline JsonBody& WithMatchScope(JsonMatchScope&& value) { SetMatchScope(std::move(value)); return *this;} /** *

What WAF should do if it fails to completely parse the JSON body. The options * are the following:

  • EVALUATE_AS_STRING - Inspect * the body as plain text. WAF applies the text transformations and inspection * criteria that you defined for the JSON inspection to the body text string.

    *
  • MATCH - Treat the web request as matching the rule * statement. WAF applies the rule action to the request.

  • * NO_MATCH - Treat the web request as not matching the rule * statement.

If you don't provide this setting, WAF parses and * evaluates the content only up to the first parsing failure that it encounters. *

WAF does its best to parse the entire JSON body, but might be forced to * stop for reasons such as invalid characters, duplicate keys, truncation, and any * content whose root node isn't an object or an array.

WAF parses the JSON * in the following examples as two valid key, value pairs:

  • *

    Missing comma: {"key1":"value1""key2":"value2"}

  • *

    Missing colon: {"key1":"value1","key2""value2"}

  • *

    Extra colons: {"key1"::"value1","key2""value2"}

*/ inline const BodyParsingFallbackBehavior& GetInvalidFallbackBehavior() const{ return m_invalidFallbackBehavior; } /** *

What WAF should do if it fails to completely parse the JSON body. The options * are the following:

  • EVALUATE_AS_STRING - Inspect * the body as plain text. WAF applies the text transformations and inspection * criteria that you defined for the JSON inspection to the body text string.

    *
  • MATCH - Treat the web request as matching the rule * statement. WAF applies the rule action to the request.

  • * NO_MATCH - Treat the web request as not matching the rule * statement.

If you don't provide this setting, WAF parses and * evaluates the content only up to the first parsing failure that it encounters. *

WAF does its best to parse the entire JSON body, but might be forced to * stop for reasons such as invalid characters, duplicate keys, truncation, and any * content whose root node isn't an object or an array.

WAF parses the JSON * in the following examples as two valid key, value pairs:

  • *

    Missing comma: {"key1":"value1""key2":"value2"}

  • *

    Missing colon: {"key1":"value1","key2""value2"}

  • *

    Extra colons: {"key1"::"value1","key2""value2"}

*/ inline bool InvalidFallbackBehaviorHasBeenSet() const { return m_invalidFallbackBehaviorHasBeenSet; } /** *

What WAF should do if it fails to completely parse the JSON body. The options * are the following:

  • EVALUATE_AS_STRING - Inspect * the body as plain text. WAF applies the text transformations and inspection * criteria that you defined for the JSON inspection to the body text string.

    *
  • MATCH - Treat the web request as matching the rule * statement. WAF applies the rule action to the request.

  • * NO_MATCH - Treat the web request as not matching the rule * statement.

If you don't provide this setting, WAF parses and * evaluates the content only up to the first parsing failure that it encounters. *

WAF does its best to parse the entire JSON body, but might be forced to * stop for reasons such as invalid characters, duplicate keys, truncation, and any * content whose root node isn't an object or an array.

WAF parses the JSON * in the following examples as two valid key, value pairs:

  • *

    Missing comma: {"key1":"value1""key2":"value2"}

  • *

    Missing colon: {"key1":"value1","key2""value2"}

  • *

    Extra colons: {"key1"::"value1","key2""value2"}

*/ inline void SetInvalidFallbackBehavior(const BodyParsingFallbackBehavior& value) { m_invalidFallbackBehaviorHasBeenSet = true; m_invalidFallbackBehavior = value; } /** *

What WAF should do if it fails to completely parse the JSON body. The options * are the following:

  • EVALUATE_AS_STRING - Inspect * the body as plain text. WAF applies the text transformations and inspection * criteria that you defined for the JSON inspection to the body text string.

    *
  • MATCH - Treat the web request as matching the rule * statement. WAF applies the rule action to the request.

  • * NO_MATCH - Treat the web request as not matching the rule * statement.

If you don't provide this setting, WAF parses and * evaluates the content only up to the first parsing failure that it encounters. *

WAF does its best to parse the entire JSON body, but might be forced to * stop for reasons such as invalid characters, duplicate keys, truncation, and any * content whose root node isn't an object or an array.

WAF parses the JSON * in the following examples as two valid key, value pairs:

  • *

    Missing comma: {"key1":"value1""key2":"value2"}

  • *

    Missing colon: {"key1":"value1","key2""value2"}

  • *

    Extra colons: {"key1"::"value1","key2""value2"}

*/ inline void SetInvalidFallbackBehavior(BodyParsingFallbackBehavior&& value) { m_invalidFallbackBehaviorHasBeenSet = true; m_invalidFallbackBehavior = std::move(value); } /** *

What WAF should do if it fails to completely parse the JSON body. The options * are the following:

  • EVALUATE_AS_STRING - Inspect * the body as plain text. WAF applies the text transformations and inspection * criteria that you defined for the JSON inspection to the body text string.

    *
  • MATCH - Treat the web request as matching the rule * statement. WAF applies the rule action to the request.

  • * NO_MATCH - Treat the web request as not matching the rule * statement.

If you don't provide this setting, WAF parses and * evaluates the content only up to the first parsing failure that it encounters. *

WAF does its best to parse the entire JSON body, but might be forced to * stop for reasons such as invalid characters, duplicate keys, truncation, and any * content whose root node isn't an object or an array.

WAF parses the JSON * in the following examples as two valid key, value pairs:

  • *

    Missing comma: {"key1":"value1""key2":"value2"}

  • *

    Missing colon: {"key1":"value1","key2""value2"}

  • *

    Extra colons: {"key1"::"value1","key2""value2"}

*/ inline JsonBody& WithInvalidFallbackBehavior(const BodyParsingFallbackBehavior& value) { SetInvalidFallbackBehavior(value); return *this;} /** *

What WAF should do if it fails to completely parse the JSON body. The options * are the following:

  • EVALUATE_AS_STRING - Inspect * the body as plain text. WAF applies the text transformations and inspection * criteria that you defined for the JSON inspection to the body text string.

    *
  • MATCH - Treat the web request as matching the rule * statement. WAF applies the rule action to the request.

  • * NO_MATCH - Treat the web request as not matching the rule * statement.

If you don't provide this setting, WAF parses and * evaluates the content only up to the first parsing failure that it encounters. *

WAF does its best to parse the entire JSON body, but might be forced to * stop for reasons such as invalid characters, duplicate keys, truncation, and any * content whose root node isn't an object or an array.

WAF parses the JSON * in the following examples as two valid key, value pairs:

  • *

    Missing comma: {"key1":"value1""key2":"value2"}

  • *

    Missing colon: {"key1":"value1","key2""value2"}

  • *

    Extra colons: {"key1"::"value1","key2""value2"}

*/ inline JsonBody& WithInvalidFallbackBehavior(BodyParsingFallbackBehavior&& value) { SetInvalidFallbackBehavior(std::move(value)); return *this;} /** *

What WAF should do if the body is larger than WAF can inspect. WAF does not * support inspecting the entire contents of the web request body if the body * exceeds the limit for the resource type. If the body is larger than the limit, * the underlying host service only forwards the contents that are below the limit * to WAF for inspection.

The default limit is 8 KB (8,192 kilobytes) for * regional resources and 16 KB (16,384 kilobytes) for CloudFront distributions. * For CloudFront distributions, you can increase the limit in the web ACL * AssociationConfig, for additional processing fees.

The * options for oversize handling are the following:

  • * CONTINUE - Inspect the available body contents normally, according * to the rule inspection criteria.

  • MATCH - Treat * the web request as matching the rule statement. WAF applies the rule action to * the request.

  • NO_MATCH - Treat the web request as * not matching the rule statement.

You can combine the * MATCH or NO_MATCH settings for oversize handling with * your rule and web ACL action settings, so that you block any request whose body * is over the limit.

Default: CONTINUE

*/ inline const OversizeHandling& GetOversizeHandling() const{ return m_oversizeHandling; } /** *

What WAF should do if the body is larger than WAF can inspect. WAF does not * support inspecting the entire contents of the web request body if the body * exceeds the limit for the resource type. If the body is larger than the limit, * the underlying host service only forwards the contents that are below the limit * to WAF for inspection.

The default limit is 8 KB (8,192 kilobytes) for * regional resources and 16 KB (16,384 kilobytes) for CloudFront distributions. * For CloudFront distributions, you can increase the limit in the web ACL * AssociationConfig, for additional processing fees.

The * options for oversize handling are the following:

  • * CONTINUE - Inspect the available body contents normally, according * to the rule inspection criteria.

  • MATCH - Treat * the web request as matching the rule statement. WAF applies the rule action to * the request.

  • NO_MATCH - Treat the web request as * not matching the rule statement.

You can combine the * MATCH or NO_MATCH settings for oversize handling with * your rule and web ACL action settings, so that you block any request whose body * is over the limit.

Default: CONTINUE

*/ inline bool OversizeHandlingHasBeenSet() const { return m_oversizeHandlingHasBeenSet; } /** *

What WAF should do if the body is larger than WAF can inspect. WAF does not * support inspecting the entire contents of the web request body if the body * exceeds the limit for the resource type. If the body is larger than the limit, * the underlying host service only forwards the contents that are below the limit * to WAF for inspection.

The default limit is 8 KB (8,192 kilobytes) for * regional resources and 16 KB (16,384 kilobytes) for CloudFront distributions. * For CloudFront distributions, you can increase the limit in the web ACL * AssociationConfig, for additional processing fees.

The * options for oversize handling are the following:

  • * CONTINUE - Inspect the available body contents normally, according * to the rule inspection criteria.

  • MATCH - Treat * the web request as matching the rule statement. WAF applies the rule action to * the request.

  • NO_MATCH - Treat the web request as * not matching the rule statement.

You can combine the * MATCH or NO_MATCH settings for oversize handling with * your rule and web ACL action settings, so that you block any request whose body * is over the limit.

Default: CONTINUE

*/ inline void SetOversizeHandling(const OversizeHandling& value) { m_oversizeHandlingHasBeenSet = true; m_oversizeHandling = value; } /** *

What WAF should do if the body is larger than WAF can inspect. WAF does not * support inspecting the entire contents of the web request body if the body * exceeds the limit for the resource type. If the body is larger than the limit, * the underlying host service only forwards the contents that are below the limit * to WAF for inspection.

The default limit is 8 KB (8,192 kilobytes) for * regional resources and 16 KB (16,384 kilobytes) for CloudFront distributions. * For CloudFront distributions, you can increase the limit in the web ACL * AssociationConfig, for additional processing fees.

The * options for oversize handling are the following:

  • * CONTINUE - Inspect the available body contents normally, according * to the rule inspection criteria.

  • MATCH - Treat * the web request as matching the rule statement. WAF applies the rule action to * the request.

  • NO_MATCH - Treat the web request as * not matching the rule statement.

You can combine the * MATCH or NO_MATCH settings for oversize handling with * your rule and web ACL action settings, so that you block any request whose body * is over the limit.

Default: CONTINUE

*/ inline void SetOversizeHandling(OversizeHandling&& value) { m_oversizeHandlingHasBeenSet = true; m_oversizeHandling = std::move(value); } /** *

What WAF should do if the body is larger than WAF can inspect. WAF does not * support inspecting the entire contents of the web request body if the body * exceeds the limit for the resource type. If the body is larger than the limit, * the underlying host service only forwards the contents that are below the limit * to WAF for inspection.

The default limit is 8 KB (8,192 kilobytes) for * regional resources and 16 KB (16,384 kilobytes) for CloudFront distributions. * For CloudFront distributions, you can increase the limit in the web ACL * AssociationConfig, for additional processing fees.

The * options for oversize handling are the following:

  • * CONTINUE - Inspect the available body contents normally, according * to the rule inspection criteria.

  • MATCH - Treat * the web request as matching the rule statement. WAF applies the rule action to * the request.

  • NO_MATCH - Treat the web request as * not matching the rule statement.

You can combine the * MATCH or NO_MATCH settings for oversize handling with * your rule and web ACL action settings, so that you block any request whose body * is over the limit.

Default: CONTINUE

*/ inline JsonBody& WithOversizeHandling(const OversizeHandling& value) { SetOversizeHandling(value); return *this;} /** *

What WAF should do if the body is larger than WAF can inspect. WAF does not * support inspecting the entire contents of the web request body if the body * exceeds the limit for the resource type. If the body is larger than the limit, * the underlying host service only forwards the contents that are below the limit * to WAF for inspection.

The default limit is 8 KB (8,192 kilobytes) for * regional resources and 16 KB (16,384 kilobytes) for CloudFront distributions. * For CloudFront distributions, you can increase the limit in the web ACL * AssociationConfig, for additional processing fees.

The * options for oversize handling are the following:

  • * CONTINUE - Inspect the available body contents normally, according * to the rule inspection criteria.

  • MATCH - Treat * the web request as matching the rule statement. WAF applies the rule action to * the request.

  • NO_MATCH - Treat the web request as * not matching the rule statement.

You can combine the * MATCH or NO_MATCH settings for oversize handling with * your rule and web ACL action settings, so that you block any request whose body * is over the limit.

Default: CONTINUE

*/ inline JsonBody& WithOversizeHandling(OversizeHandling&& value) { SetOversizeHandling(std::move(value)); return *this;} private: JsonMatchPattern m_matchPattern; bool m_matchPatternHasBeenSet = false; JsonMatchScope m_matchScope; bool m_matchScopeHasBeenSet = false; BodyParsingFallbackBehavior m_invalidFallbackBehavior; bool m_invalidFallbackBehaviorHasBeenSet = false; OversizeHandling m_oversizeHandling; bool m_oversizeHandlingHasBeenSet = false; }; } // namespace Model } // namespace WAFV2 } // namespace Aws