/** * 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 { /** *

A rule statement that compares a number of bytes against the size of a * request component, using a comparison operator, such as greater than (>) or * less than (<). For example, you can use a size constraint statement to look * for query strings that are longer than 100 bytes.

If you configure WAF * to inspect the request body, WAF inspects only the number of bytes of the body * up to the limit for the web ACL. By default, for regional web ACLs, this limit * is 8 KB (8,192 kilobytes) and for CloudFront web ACLs, this limit is 16 KB * (16,384 kilobytes). For CloudFront web ACLs, you can increase the limit in the * web ACL AssociationConfig, for additional fees. If you know that * the request body for your web requests should never exceed the inspection limit, * you could use a size constraint statement to block requests that have a larger * request body size.

If you choose URI for the value of Part of the request * to filter on, the slash (/) in the URI counts as one character. For example, the * URI /logo.jpg is nine characters long.

See Also:

* AWS * API Reference

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

The part of the web request that you want WAF to inspect.

*/ inline const FieldToMatch& GetFieldToMatch() const{ return m_fieldToMatch; } /** *

The part of the web request that you want WAF to inspect.

*/ inline bool FieldToMatchHasBeenSet() const { return m_fieldToMatchHasBeenSet; } /** *

The part of the web request that you want WAF to inspect.

*/ inline void SetFieldToMatch(const FieldToMatch& value) { m_fieldToMatchHasBeenSet = true; m_fieldToMatch = value; } /** *

The part of the web request that you want WAF to inspect.

*/ inline void SetFieldToMatch(FieldToMatch&& value) { m_fieldToMatchHasBeenSet = true; m_fieldToMatch = std::move(value); } /** *

The part of the web request that you want WAF to inspect.

*/ inline SizeConstraintStatement& WithFieldToMatch(const FieldToMatch& value) { SetFieldToMatch(value); return *this;} /** *

The part of the web request that you want WAF to inspect.

*/ inline SizeConstraintStatement& WithFieldToMatch(FieldToMatch&& value) { SetFieldToMatch(std::move(value)); return *this;} /** *

The operator to use to compare the request part to the size setting.

*/ inline const ComparisonOperator& GetComparisonOperator() const{ return m_comparisonOperator; } /** *

The operator to use to compare the request part to the size setting.

*/ inline bool ComparisonOperatorHasBeenSet() const { return m_comparisonOperatorHasBeenSet; } /** *

The operator to use to compare the request part to the size setting.

*/ inline void SetComparisonOperator(const ComparisonOperator& value) { m_comparisonOperatorHasBeenSet = true; m_comparisonOperator = value; } /** *

The operator to use to compare the request part to the size setting.

*/ inline void SetComparisonOperator(ComparisonOperator&& value) { m_comparisonOperatorHasBeenSet = true; m_comparisonOperator = std::move(value); } /** *

The operator to use to compare the request part to the size setting.

*/ inline SizeConstraintStatement& WithComparisonOperator(const ComparisonOperator& value) { SetComparisonOperator(value); return *this;} /** *

The operator to use to compare the request part to the size setting.

*/ inline SizeConstraintStatement& WithComparisonOperator(ComparisonOperator&& value) { SetComparisonOperator(std::move(value)); return *this;} /** *

The size, in byte, to compare to the request part, after any * transformations.

*/ inline long long GetSize() const{ return m_size; } /** *

The size, in byte, to compare to the request part, after any * transformations.

*/ inline bool SizeHasBeenSet() const { return m_sizeHasBeenSet; } /** *

The size, in byte, to compare to the request part, after any * transformations.

*/ inline void SetSize(long long value) { m_sizeHasBeenSet = true; m_size = value; } /** *

The size, in byte, to compare to the request part, after any * transformations.

*/ inline SizeConstraintStatement& WithSize(long long value) { SetSize(value); return *this;} /** *

Text transformations eliminate some of the unusual formatting that attackers * use in web requests in an effort to bypass detection. Text transformations are * used in rule match statements, to transform the FieldToMatch * request component before inspecting it, and they're used in rate-based rule * statements, to transform request components before using them as custom * aggregation keys. If you specify one or more transformations to apply, WAF * performs all transformations on the specified content, starting from the lowest * priority setting, and then uses the component contents.

*/ inline const Aws::Vector& GetTextTransformations() const{ return m_textTransformations; } /** *

Text transformations eliminate some of the unusual formatting that attackers * use in web requests in an effort to bypass detection. Text transformations are * used in rule match statements, to transform the FieldToMatch * request component before inspecting it, and they're used in rate-based rule * statements, to transform request components before using them as custom * aggregation keys. If you specify one or more transformations to apply, WAF * performs all transformations on the specified content, starting from the lowest * priority setting, and then uses the component contents.

*/ inline bool TextTransformationsHasBeenSet() const { return m_textTransformationsHasBeenSet; } /** *

Text transformations eliminate some of the unusual formatting that attackers * use in web requests in an effort to bypass detection. Text transformations are * used in rule match statements, to transform the FieldToMatch * request component before inspecting it, and they're used in rate-based rule * statements, to transform request components before using them as custom * aggregation keys. If you specify one or more transformations to apply, WAF * performs all transformations on the specified content, starting from the lowest * priority setting, and then uses the component contents.

*/ inline void SetTextTransformations(const Aws::Vector& value) { m_textTransformationsHasBeenSet = true; m_textTransformations = value; } /** *

Text transformations eliminate some of the unusual formatting that attackers * use in web requests in an effort to bypass detection. Text transformations are * used in rule match statements, to transform the FieldToMatch * request component before inspecting it, and they're used in rate-based rule * statements, to transform request components before using them as custom * aggregation keys. If you specify one or more transformations to apply, WAF * performs all transformations on the specified content, starting from the lowest * priority setting, and then uses the component contents.

*/ inline void SetTextTransformations(Aws::Vector&& value) { m_textTransformationsHasBeenSet = true; m_textTransformations = std::move(value); } /** *

Text transformations eliminate some of the unusual formatting that attackers * use in web requests in an effort to bypass detection. Text transformations are * used in rule match statements, to transform the FieldToMatch * request component before inspecting it, and they're used in rate-based rule * statements, to transform request components before using them as custom * aggregation keys. If you specify one or more transformations to apply, WAF * performs all transformations on the specified content, starting from the lowest * priority setting, and then uses the component contents.

*/ inline SizeConstraintStatement& WithTextTransformations(const Aws::Vector& value) { SetTextTransformations(value); return *this;} /** *

Text transformations eliminate some of the unusual formatting that attackers * use in web requests in an effort to bypass detection. Text transformations are * used in rule match statements, to transform the FieldToMatch * request component before inspecting it, and they're used in rate-based rule * statements, to transform request components before using them as custom * aggregation keys. If you specify one or more transformations to apply, WAF * performs all transformations on the specified content, starting from the lowest * priority setting, and then uses the component contents.

*/ inline SizeConstraintStatement& WithTextTransformations(Aws::Vector&& value) { SetTextTransformations(std::move(value)); return *this;} /** *

Text transformations eliminate some of the unusual formatting that attackers * use in web requests in an effort to bypass detection. Text transformations are * used in rule match statements, to transform the FieldToMatch * request component before inspecting it, and they're used in rate-based rule * statements, to transform request components before using them as custom * aggregation keys. If you specify one or more transformations to apply, WAF * performs all transformations on the specified content, starting from the lowest * priority setting, and then uses the component contents.

*/ inline SizeConstraintStatement& AddTextTransformations(const TextTransformation& value) { m_textTransformationsHasBeenSet = true; m_textTransformations.push_back(value); return *this; } /** *

Text transformations eliminate some of the unusual formatting that attackers * use in web requests in an effort to bypass detection. Text transformations are * used in rule match statements, to transform the FieldToMatch * request component before inspecting it, and they're used in rate-based rule * statements, to transform request components before using them as custom * aggregation keys. If you specify one or more transformations to apply, WAF * performs all transformations on the specified content, starting from the lowest * priority setting, and then uses the component contents.

*/ inline SizeConstraintStatement& AddTextTransformations(TextTransformation&& value) { m_textTransformationsHasBeenSet = true; m_textTransformations.push_back(std::move(value)); return *this; } private: FieldToMatch m_fieldToMatch; bool m_fieldToMatchHasBeenSet = false; ComparisonOperator m_comparisonOperator; bool m_comparisonOperatorHasBeenSet = false; long long m_size; bool m_sizeHasBeenSet = false; Aws::Vector m_textTransformations; bool m_textTransformationsHasBeenSet = false; }; } // namespace Model } // namespace WAFV2 } // namespace Aws