/** * 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 WAF { namespace Model { /** *

This is AWS WAF Classic documentation. For more information, * see AWS * WAF Classic in the developer guide.

For the latest version of AWS * WAF, use the AWS WAFV2 API and see the AWS * WAF Developer Guide. With the latest version, AWS WAF has a single set of * endpoints for regional and global use.

The bytes (typically a * string that corresponds with ASCII characters) that you want AWS WAF to search * for in web requests, the location in requests that you want AWS WAF to search, * and other settings.

See Also:

AWS * API Reference

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

The part of a web request that you want AWS WAF to search, such as a * specified header or a query string. For more information, see * FieldToMatch.

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

The part of a web request that you want AWS WAF to search, such as a * specified header or a query string. For more information, see * FieldToMatch.

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

The part of a web request that you want AWS WAF to search, such as a * specified header or a query string. For more information, see * FieldToMatch.

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

The part of a web request that you want AWS WAF to search, such as a * specified header or a query string. For more information, see * FieldToMatch.

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

The part of a web request that you want AWS WAF to search, such as a * specified header or a query string. For more information, see * FieldToMatch.

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

The part of a web request that you want AWS WAF to search, such as a * specified header or a query string. For more information, see * FieldToMatch.

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

The value that you want AWS WAF to search for. AWS WAF searches for the * specified string in the part of web requests that you specified in * FieldToMatch. The maximum length of the value is 50 bytes.

*

Valid values depend on the values that you specified for * FieldToMatch:

  • HEADER: The value that * you want AWS WAF to search for in the request header that you specified in * FieldToMatch, for example, the value of the User-Agent or * Referer header.

  • METHOD: The HTTP * method, which indicates the type of operation specified in the request. * CloudFront supports the following methods: DELETE, * GET, HEAD, OPTIONS, PATCH, * POST, and PUT.

  • * QUERY_STRING: The value that you want AWS WAF to search for in the * query string, which is the part of a URL that appears after a ? * character.

  • URI: The value that you want AWS WAF * to search for in the part of a URL that identifies a resource, for example, * /images/daily-ad.jpg.

  • BODY: The * part of a request that contains any additional data that you want to send to * your web server as the HTTP request body, such as data from a form. The request * body immediately follows the request headers. Note that only the first * 8192 bytes of the request body are forwarded to AWS WAF for * inspection. To allow or block requests based on the length of the body, you can * create a size constraint set. For more information, see * CreateSizeConstraintSet.

  • * SINGLE_QUERY_ARG: The parameter in the query string that you will * inspect, such as UserName or SalesRegion. The maximum length for * SINGLE_QUERY_ARG is 30 characters.

  • * ALL_QUERY_ARGS: Similar to SINGLE_QUERY_ARG, but * instead of inspecting a single parameter, AWS WAF inspects all parameters within * the query string for the value or regex pattern that you specify in * TargetString.

If TargetString * includes alphabetic characters A-Z and a-z, note that the value is case * sensitive.

If you're using the AWS WAF API

Specify a * base64-encoded version of the value. The maximum length of the value before you * base64-encode it is 50 bytes.

For example, suppose the value of * Type is HEADER and the value of Data is * User-Agent. If you want to search the User-Agent * header for the value BadBot, you base64-encode BadBot * using MIME base64-encoding and include the resulting value, * QmFkQm90, in the value of TargetString.

If * you're using the AWS CLI or one of the AWS SDKs

The value that you * want AWS WAF to search for. The SDK automatically base64 encodes the value.

*/ inline const Aws::Utils::ByteBuffer& GetTargetString() const{ return m_targetString; } /** *

The value that you want AWS WAF to search for. AWS WAF searches for the * specified string in the part of web requests that you specified in * FieldToMatch. The maximum length of the value is 50 bytes.

*

Valid values depend on the values that you specified for * FieldToMatch:

  • HEADER: The value that * you want AWS WAF to search for in the request header that you specified in * FieldToMatch, for example, the value of the User-Agent or * Referer header.

  • METHOD: The HTTP * method, which indicates the type of operation specified in the request. * CloudFront supports the following methods: DELETE, * GET, HEAD, OPTIONS, PATCH, * POST, and PUT.

  • * QUERY_STRING: The value that you want AWS WAF to search for in the * query string, which is the part of a URL that appears after a ? * character.

  • URI: The value that you want AWS WAF * to search for in the part of a URL that identifies a resource, for example, * /images/daily-ad.jpg.

  • BODY: The * part of a request that contains any additional data that you want to send to * your web server as the HTTP request body, such as data from a form. The request * body immediately follows the request headers. Note that only the first * 8192 bytes of the request body are forwarded to AWS WAF for * inspection. To allow or block requests based on the length of the body, you can * create a size constraint set. For more information, see * CreateSizeConstraintSet.

  • * SINGLE_QUERY_ARG: The parameter in the query string that you will * inspect, such as UserName or SalesRegion. The maximum length for * SINGLE_QUERY_ARG is 30 characters.

  • * ALL_QUERY_ARGS: Similar to SINGLE_QUERY_ARG, but * instead of inspecting a single parameter, AWS WAF inspects all parameters within * the query string for the value or regex pattern that you specify in * TargetString.

If TargetString * includes alphabetic characters A-Z and a-z, note that the value is case * sensitive.

If you're using the AWS WAF API

Specify a * base64-encoded version of the value. The maximum length of the value before you * base64-encode it is 50 bytes.

For example, suppose the value of * Type is HEADER and the value of Data is * User-Agent. If you want to search the User-Agent * header for the value BadBot, you base64-encode BadBot * using MIME base64-encoding and include the resulting value, * QmFkQm90, in the value of TargetString.

If * you're using the AWS CLI or one of the AWS SDKs

The value that you * want AWS WAF to search for. The SDK automatically base64 encodes the value.

*/ inline bool TargetStringHasBeenSet() const { return m_targetStringHasBeenSet; } /** *

The value that you want AWS WAF to search for. AWS WAF searches for the * specified string in the part of web requests that you specified in * FieldToMatch. The maximum length of the value is 50 bytes.

*

Valid values depend on the values that you specified for * FieldToMatch:

  • HEADER: The value that * you want AWS WAF to search for in the request header that you specified in * FieldToMatch, for example, the value of the User-Agent or * Referer header.

  • METHOD: The HTTP * method, which indicates the type of operation specified in the request. * CloudFront supports the following methods: DELETE, * GET, HEAD, OPTIONS, PATCH, * POST, and PUT.

  • * QUERY_STRING: The value that you want AWS WAF to search for in the * query string, which is the part of a URL that appears after a ? * character.

  • URI: The value that you want AWS WAF * to search for in the part of a URL that identifies a resource, for example, * /images/daily-ad.jpg.

  • BODY: The * part of a request that contains any additional data that you want to send to * your web server as the HTTP request body, such as data from a form. The request * body immediately follows the request headers. Note that only the first * 8192 bytes of the request body are forwarded to AWS WAF for * inspection. To allow or block requests based on the length of the body, you can * create a size constraint set. For more information, see * CreateSizeConstraintSet.

  • * SINGLE_QUERY_ARG: The parameter in the query string that you will * inspect, such as UserName or SalesRegion. The maximum length for * SINGLE_QUERY_ARG is 30 characters.

  • * ALL_QUERY_ARGS: Similar to SINGLE_QUERY_ARG, but * instead of inspecting a single parameter, AWS WAF inspects all parameters within * the query string for the value or regex pattern that you specify in * TargetString.

If TargetString * includes alphabetic characters A-Z and a-z, note that the value is case * sensitive.

If you're using the AWS WAF API

Specify a * base64-encoded version of the value. The maximum length of the value before you * base64-encode it is 50 bytes.

For example, suppose the value of * Type is HEADER and the value of Data is * User-Agent. If you want to search the User-Agent * header for the value BadBot, you base64-encode BadBot * using MIME base64-encoding and include the resulting value, * QmFkQm90, in the value of TargetString.

If * you're using the AWS CLI or one of the AWS SDKs

The value that you * want AWS WAF to search for. The SDK automatically base64 encodes the value.

*/ inline void SetTargetString(const Aws::Utils::ByteBuffer& value) { m_targetStringHasBeenSet = true; m_targetString = value; } /** *

The value that you want AWS WAF to search for. AWS WAF searches for the * specified string in the part of web requests that you specified in * FieldToMatch. The maximum length of the value is 50 bytes.

*

Valid values depend on the values that you specified for * FieldToMatch:

  • HEADER: The value that * you want AWS WAF to search for in the request header that you specified in * FieldToMatch, for example, the value of the User-Agent or * Referer header.

  • METHOD: The HTTP * method, which indicates the type of operation specified in the request. * CloudFront supports the following methods: DELETE, * GET, HEAD, OPTIONS, PATCH, * POST, and PUT.

  • * QUERY_STRING: The value that you want AWS WAF to search for in the * query string, which is the part of a URL that appears after a ? * character.

  • URI: The value that you want AWS WAF * to search for in the part of a URL that identifies a resource, for example, * /images/daily-ad.jpg.

  • BODY: The * part of a request that contains any additional data that you want to send to * your web server as the HTTP request body, such as data from a form. The request * body immediately follows the request headers. Note that only the first * 8192 bytes of the request body are forwarded to AWS WAF for * inspection. To allow or block requests based on the length of the body, you can * create a size constraint set. For more information, see * CreateSizeConstraintSet.

  • * SINGLE_QUERY_ARG: The parameter in the query string that you will * inspect, such as UserName or SalesRegion. The maximum length for * SINGLE_QUERY_ARG is 30 characters.

  • * ALL_QUERY_ARGS: Similar to SINGLE_QUERY_ARG, but * instead of inspecting a single parameter, AWS WAF inspects all parameters within * the query string for the value or regex pattern that you specify in * TargetString.

If TargetString * includes alphabetic characters A-Z and a-z, note that the value is case * sensitive.

If you're using the AWS WAF API

Specify a * base64-encoded version of the value. The maximum length of the value before you * base64-encode it is 50 bytes.

For example, suppose the value of * Type is HEADER and the value of Data is * User-Agent. If you want to search the User-Agent * header for the value BadBot, you base64-encode BadBot * using MIME base64-encoding and include the resulting value, * QmFkQm90, in the value of TargetString.

If * you're using the AWS CLI or one of the AWS SDKs

The value that you * want AWS WAF to search for. The SDK automatically base64 encodes the value.

*/ inline void SetTargetString(Aws::Utils::ByteBuffer&& value) { m_targetStringHasBeenSet = true; m_targetString = std::move(value); } /** *

The value that you want AWS WAF to search for. AWS WAF searches for the * specified string in the part of web requests that you specified in * FieldToMatch. The maximum length of the value is 50 bytes.

*

Valid values depend on the values that you specified for * FieldToMatch:

  • HEADER: The value that * you want AWS WAF to search for in the request header that you specified in * FieldToMatch, for example, the value of the User-Agent or * Referer header.

  • METHOD: The HTTP * method, which indicates the type of operation specified in the request. * CloudFront supports the following methods: DELETE, * GET, HEAD, OPTIONS, PATCH, * POST, and PUT.

  • * QUERY_STRING: The value that you want AWS WAF to search for in the * query string, which is the part of a URL that appears after a ? * character.

  • URI: The value that you want AWS WAF * to search for in the part of a URL that identifies a resource, for example, * /images/daily-ad.jpg.

  • BODY: The * part of a request that contains any additional data that you want to send to * your web server as the HTTP request body, such as data from a form. The request * body immediately follows the request headers. Note that only the first * 8192 bytes of the request body are forwarded to AWS WAF for * inspection. To allow or block requests based on the length of the body, you can * create a size constraint set. For more information, see * CreateSizeConstraintSet.

  • * SINGLE_QUERY_ARG: The parameter in the query string that you will * inspect, such as UserName or SalesRegion. The maximum length for * SINGLE_QUERY_ARG is 30 characters.

  • * ALL_QUERY_ARGS: Similar to SINGLE_QUERY_ARG, but * instead of inspecting a single parameter, AWS WAF inspects all parameters within * the query string for the value or regex pattern that you specify in * TargetString.

If TargetString * includes alphabetic characters A-Z and a-z, note that the value is case * sensitive.

If you're using the AWS WAF API

Specify a * base64-encoded version of the value. The maximum length of the value before you * base64-encode it is 50 bytes.

For example, suppose the value of * Type is HEADER and the value of Data is * User-Agent. If you want to search the User-Agent * header for the value BadBot, you base64-encode BadBot * using MIME base64-encoding and include the resulting value, * QmFkQm90, in the value of TargetString.

If * you're using the AWS CLI or one of the AWS SDKs

The value that you * want AWS WAF to search for. The SDK automatically base64 encodes the value.

*/ inline ByteMatchTuple& WithTargetString(const Aws::Utils::ByteBuffer& value) { SetTargetString(value); return *this;} /** *

The value that you want AWS WAF to search for. AWS WAF searches for the * specified string in the part of web requests that you specified in * FieldToMatch. The maximum length of the value is 50 bytes.

*

Valid values depend on the values that you specified for * FieldToMatch:

  • HEADER: The value that * you want AWS WAF to search for in the request header that you specified in * FieldToMatch, for example, the value of the User-Agent or * Referer header.

  • METHOD: The HTTP * method, which indicates the type of operation specified in the request. * CloudFront supports the following methods: DELETE, * GET, HEAD, OPTIONS, PATCH, * POST, and PUT.

  • * QUERY_STRING: The value that you want AWS WAF to search for in the * query string, which is the part of a URL that appears after a ? * character.

  • URI: The value that you want AWS WAF * to search for in the part of a URL that identifies a resource, for example, * /images/daily-ad.jpg.

  • BODY: The * part of a request that contains any additional data that you want to send to * your web server as the HTTP request body, such as data from a form. The request * body immediately follows the request headers. Note that only the first * 8192 bytes of the request body are forwarded to AWS WAF for * inspection. To allow or block requests based on the length of the body, you can * create a size constraint set. For more information, see * CreateSizeConstraintSet.

  • * SINGLE_QUERY_ARG: The parameter in the query string that you will * inspect, such as UserName or SalesRegion. The maximum length for * SINGLE_QUERY_ARG is 30 characters.

  • * ALL_QUERY_ARGS: Similar to SINGLE_QUERY_ARG, but * instead of inspecting a single parameter, AWS WAF inspects all parameters within * the query string for the value or regex pattern that you specify in * TargetString.

If TargetString * includes alphabetic characters A-Z and a-z, note that the value is case * sensitive.

If you're using the AWS WAF API

Specify a * base64-encoded version of the value. The maximum length of the value before you * base64-encode it is 50 bytes.

For example, suppose the value of * Type is HEADER and the value of Data is * User-Agent. If you want to search the User-Agent * header for the value BadBot, you base64-encode BadBot * using MIME base64-encoding and include the resulting value, * QmFkQm90, in the value of TargetString.

If * you're using the AWS CLI or one of the AWS SDKs

The value that you * want AWS WAF to search for. The SDK automatically base64 encodes the value.

*/ inline ByteMatchTuple& WithTargetString(Aws::Utils::ByteBuffer&& value) { SetTargetString(std::move(value)); return *this;} /** *

Text transformations eliminate some of the unusual formatting that attackers * use in web requests in an effort to bypass AWS WAF. If you specify a * transformation, AWS WAF performs the transformation on FieldToMatch * before inspecting it for a match.

You can only specify a single type of * TextTransformation.

CMD_LINE

When you're concerned that * attackers are injecting an operating system command line command and using * unusual formatting to disguise some or all of the command, use this option to * perform the following transformations:

  • Delete the following * characters: \ " ' ^

  • Delete spaces before the following * characters: / (

  • Replace the following characters with a space: * , ;

  • Replace multiple spaces with one space

  • *

    Convert uppercase letters (A-Z) to lowercase (a-z)

* COMPRESS_WHITE_SPACE

Use this option to replace the following * characters with a space character (decimal 32):

  • \f, formfeed, * decimal 12

  • \t, tab, decimal 9

  • \n, newline, * decimal 10

  • \r, carriage return, decimal 13

  • *

    \v, vertical tab, decimal 11

  • non-breaking space, decimal * 160

COMPRESS_WHITE_SPACE also replaces multiple * spaces with one space.

HTML_ENTITY_DECODE

Use this option * to replace HTML-encoded characters with unencoded characters. * HTML_ENTITY_DECODE performs the following operations:

  • *

    Replaces (ampersand)quot; with "

  • *

    Replaces (ampersand)nbsp; with a non-breaking space, decimal * 160

  • Replaces (ampersand)lt; with a "less than" * symbol

  • Replaces (ampersand)gt; with * >

  • Replaces characters that are represented in * hexadecimal format, (ampersand)#xhhhh;, with the corresponding * characters

  • Replaces characters that are represented in decimal * format, (ampersand)#nnnn;, with the corresponding characters

    *

LOWERCASE

Use this option to convert uppercase * letters (A-Z) to lowercase (a-z).

URL_DECODE

Use this * option to decode a URL-encoded value.

NONE

Specify * NONE if you don't want to perform any text transformations.

*/ inline const TextTransformation& GetTextTransformation() const{ return m_textTransformation; } /** *

Text transformations eliminate some of the unusual formatting that attackers * use in web requests in an effort to bypass AWS WAF. If you specify a * transformation, AWS WAF performs the transformation on FieldToMatch * before inspecting it for a match.

You can only specify a single type of * TextTransformation.

CMD_LINE

When you're concerned that * attackers are injecting an operating system command line command and using * unusual formatting to disguise some or all of the command, use this option to * perform the following transformations:

  • Delete the following * characters: \ " ' ^

  • Delete spaces before the following * characters: / (

  • Replace the following characters with a space: * , ;

  • Replace multiple spaces with one space

  • *

    Convert uppercase letters (A-Z) to lowercase (a-z)

* COMPRESS_WHITE_SPACE

Use this option to replace the following * characters with a space character (decimal 32):

  • \f, formfeed, * decimal 12

  • \t, tab, decimal 9

  • \n, newline, * decimal 10

  • \r, carriage return, decimal 13

  • *

    \v, vertical tab, decimal 11

  • non-breaking space, decimal * 160

COMPRESS_WHITE_SPACE also replaces multiple * spaces with one space.

HTML_ENTITY_DECODE

Use this option * to replace HTML-encoded characters with unencoded characters. * HTML_ENTITY_DECODE performs the following operations:

  • *

    Replaces (ampersand)quot; with "

  • *

    Replaces (ampersand)nbsp; with a non-breaking space, decimal * 160

  • Replaces (ampersand)lt; with a "less than" * symbol

  • Replaces (ampersand)gt; with * >

  • Replaces characters that are represented in * hexadecimal format, (ampersand)#xhhhh;, with the corresponding * characters

  • Replaces characters that are represented in decimal * format, (ampersand)#nnnn;, with the corresponding characters

    *

LOWERCASE

Use this option to convert uppercase * letters (A-Z) to lowercase (a-z).

URL_DECODE

Use this * option to decode a URL-encoded value.

NONE

Specify * NONE if you don't want to perform any text transformations.

*/ inline bool TextTransformationHasBeenSet() const { return m_textTransformationHasBeenSet; } /** *

Text transformations eliminate some of the unusual formatting that attackers * use in web requests in an effort to bypass AWS WAF. If you specify a * transformation, AWS WAF performs the transformation on FieldToMatch * before inspecting it for a match.

You can only specify a single type of * TextTransformation.

CMD_LINE

When you're concerned that * attackers are injecting an operating system command line command and using * unusual formatting to disguise some or all of the command, use this option to * perform the following transformations:

  • Delete the following * characters: \ " ' ^

  • Delete spaces before the following * characters: / (

  • Replace the following characters with a space: * , ;

  • Replace multiple spaces with one space

  • *

    Convert uppercase letters (A-Z) to lowercase (a-z)

* COMPRESS_WHITE_SPACE

Use this option to replace the following * characters with a space character (decimal 32):

  • \f, formfeed, * decimal 12

  • \t, tab, decimal 9

  • \n, newline, * decimal 10

  • \r, carriage return, decimal 13

  • *

    \v, vertical tab, decimal 11

  • non-breaking space, decimal * 160

COMPRESS_WHITE_SPACE also replaces multiple * spaces with one space.

HTML_ENTITY_DECODE

Use this option * to replace HTML-encoded characters with unencoded characters. * HTML_ENTITY_DECODE performs the following operations:

  • *

    Replaces (ampersand)quot; with "

  • *

    Replaces (ampersand)nbsp; with a non-breaking space, decimal * 160

  • Replaces (ampersand)lt; with a "less than" * symbol

  • Replaces (ampersand)gt; with * >

  • Replaces characters that are represented in * hexadecimal format, (ampersand)#xhhhh;, with the corresponding * characters

  • Replaces characters that are represented in decimal * format, (ampersand)#nnnn;, with the corresponding characters

    *

LOWERCASE

Use this option to convert uppercase * letters (A-Z) to lowercase (a-z).

URL_DECODE

Use this * option to decode a URL-encoded value.

NONE

Specify * NONE if you don't want to perform any text transformations.

*/ inline void SetTextTransformation(const TextTransformation& value) { m_textTransformationHasBeenSet = true; m_textTransformation = value; } /** *

Text transformations eliminate some of the unusual formatting that attackers * use in web requests in an effort to bypass AWS WAF. If you specify a * transformation, AWS WAF performs the transformation on FieldToMatch * before inspecting it for a match.

You can only specify a single type of * TextTransformation.

CMD_LINE

When you're concerned that * attackers are injecting an operating system command line command and using * unusual formatting to disguise some or all of the command, use this option to * perform the following transformations:

  • Delete the following * characters: \ " ' ^

  • Delete spaces before the following * characters: / (

  • Replace the following characters with a space: * , ;

  • Replace multiple spaces with one space

  • *

    Convert uppercase letters (A-Z) to lowercase (a-z)

* COMPRESS_WHITE_SPACE

Use this option to replace the following * characters with a space character (decimal 32):

  • \f, formfeed, * decimal 12

  • \t, tab, decimal 9

  • \n, newline, * decimal 10

  • \r, carriage return, decimal 13

  • *

    \v, vertical tab, decimal 11

  • non-breaking space, decimal * 160

COMPRESS_WHITE_SPACE also replaces multiple * spaces with one space.

HTML_ENTITY_DECODE

Use this option * to replace HTML-encoded characters with unencoded characters. * HTML_ENTITY_DECODE performs the following operations:

  • *

    Replaces (ampersand)quot; with "

  • *

    Replaces (ampersand)nbsp; with a non-breaking space, decimal * 160

  • Replaces (ampersand)lt; with a "less than" * symbol

  • Replaces (ampersand)gt; with * >

  • Replaces characters that are represented in * hexadecimal format, (ampersand)#xhhhh;, with the corresponding * characters

  • Replaces characters that are represented in decimal * format, (ampersand)#nnnn;, with the corresponding characters

    *

LOWERCASE

Use this option to convert uppercase * letters (A-Z) to lowercase (a-z).

URL_DECODE

Use this * option to decode a URL-encoded value.

NONE

Specify * NONE if you don't want to perform any text transformations.

*/ inline void SetTextTransformation(TextTransformation&& value) { m_textTransformationHasBeenSet = true; m_textTransformation = std::move(value); } /** *

Text transformations eliminate some of the unusual formatting that attackers * use in web requests in an effort to bypass AWS WAF. If you specify a * transformation, AWS WAF performs the transformation on FieldToMatch * before inspecting it for a match.

You can only specify a single type of * TextTransformation.

CMD_LINE

When you're concerned that * attackers are injecting an operating system command line command and using * unusual formatting to disguise some or all of the command, use this option to * perform the following transformations:

  • Delete the following * characters: \ " ' ^

  • Delete spaces before the following * characters: / (

  • Replace the following characters with a space: * , ;

  • Replace multiple spaces with one space

  • *

    Convert uppercase letters (A-Z) to lowercase (a-z)

* COMPRESS_WHITE_SPACE

Use this option to replace the following * characters with a space character (decimal 32):

  • \f, formfeed, * decimal 12

  • \t, tab, decimal 9

  • \n, newline, * decimal 10

  • \r, carriage return, decimal 13

  • *

    \v, vertical tab, decimal 11

  • non-breaking space, decimal * 160

COMPRESS_WHITE_SPACE also replaces multiple * spaces with one space.

HTML_ENTITY_DECODE

Use this option * to replace HTML-encoded characters with unencoded characters. * HTML_ENTITY_DECODE performs the following operations:

  • *

    Replaces (ampersand)quot; with "

  • *

    Replaces (ampersand)nbsp; with a non-breaking space, decimal * 160

  • Replaces (ampersand)lt; with a "less than" * symbol

  • Replaces (ampersand)gt; with * >

  • Replaces characters that are represented in * hexadecimal format, (ampersand)#xhhhh;, with the corresponding * characters

  • Replaces characters that are represented in decimal * format, (ampersand)#nnnn;, with the corresponding characters

    *

LOWERCASE

Use this option to convert uppercase * letters (A-Z) to lowercase (a-z).

URL_DECODE

Use this * option to decode a URL-encoded value.

NONE

Specify * NONE if you don't want to perform any text transformations.

*/ inline ByteMatchTuple& WithTextTransformation(const TextTransformation& value) { SetTextTransformation(value); return *this;} /** *

Text transformations eliminate some of the unusual formatting that attackers * use in web requests in an effort to bypass AWS WAF. If you specify a * transformation, AWS WAF performs the transformation on FieldToMatch * before inspecting it for a match.

You can only specify a single type of * TextTransformation.

CMD_LINE

When you're concerned that * attackers are injecting an operating system command line command and using * unusual formatting to disguise some or all of the command, use this option to * perform the following transformations:

  • Delete the following * characters: \ " ' ^

  • Delete spaces before the following * characters: / (

  • Replace the following characters with a space: * , ;

  • Replace multiple spaces with one space

  • *

    Convert uppercase letters (A-Z) to lowercase (a-z)

* COMPRESS_WHITE_SPACE

Use this option to replace the following * characters with a space character (decimal 32):

  • \f, formfeed, * decimal 12

  • \t, tab, decimal 9

  • \n, newline, * decimal 10

  • \r, carriage return, decimal 13

  • *

    \v, vertical tab, decimal 11

  • non-breaking space, decimal * 160

COMPRESS_WHITE_SPACE also replaces multiple * spaces with one space.

HTML_ENTITY_DECODE

Use this option * to replace HTML-encoded characters with unencoded characters. * HTML_ENTITY_DECODE performs the following operations:

  • *

    Replaces (ampersand)quot; with "

  • *

    Replaces (ampersand)nbsp; with a non-breaking space, decimal * 160

  • Replaces (ampersand)lt; with a "less than" * symbol

  • Replaces (ampersand)gt; with * >

  • Replaces characters that are represented in * hexadecimal format, (ampersand)#xhhhh;, with the corresponding * characters

  • Replaces characters that are represented in decimal * format, (ampersand)#nnnn;, with the corresponding characters

    *

LOWERCASE

Use this option to convert uppercase * letters (A-Z) to lowercase (a-z).

URL_DECODE

Use this * option to decode a URL-encoded value.

NONE

Specify * NONE if you don't want to perform any text transformations.

*/ inline ByteMatchTuple& WithTextTransformation(TextTransformation&& value) { SetTextTransformation(std::move(value)); return *this;} /** *

Within the portion of a web request that you want to search (for example, in * the query string, if any), specify where you want AWS WAF to search. Valid * values include the following:

CONTAINS

The specified part * of the web request must include the value of TargetString, but the * location doesn't matter.

CONTAINS_WORD

The specified part * of the web request must include the value of TargetString, and * TargetString must contain only alphanumeric characters or * underscore (A-Z, a-z, 0-9, or _). In addition, TargetString must be * a word, which means one of the following:

  • * TargetString exactly matches the value of the specified part of the * web request, such as the value of a header.

  • * TargetString is at the beginning of the specified part of the web * request and is followed by a character other than an alphanumeric character or * underscore (_), for example, BadBot;.

  • * TargetString is at the end of the specified part of the web request * and is preceded by a character other than an alphanumeric character or * underscore (_), for example, ;BadBot.

  • * TargetString is in the middle of the specified part of the web * request and is preceded and followed by characters other than alphanumeric * characters or underscore (_), for example, -BadBot;.

  • *

EXACTLY

The value of the specified part of the web * request must exactly match the value of TargetString.

* STARTS_WITH

The value of TargetString must appear at * the beginning of the specified part of the web request.

ENDS_WITH *

The value of TargetString must appear at the end of the * specified part of the web request.

*/ inline const PositionalConstraint& GetPositionalConstraint() const{ return m_positionalConstraint; } /** *

Within the portion of a web request that you want to search (for example, in * the query string, if any), specify where you want AWS WAF to search. Valid * values include the following:

CONTAINS

The specified part * of the web request must include the value of TargetString, but the * location doesn't matter.

CONTAINS_WORD

The specified part * of the web request must include the value of TargetString, and * TargetString must contain only alphanumeric characters or * underscore (A-Z, a-z, 0-9, or _). In addition, TargetString must be * a word, which means one of the following:

  • * TargetString exactly matches the value of the specified part of the * web request, such as the value of a header.

  • * TargetString is at the beginning of the specified part of the web * request and is followed by a character other than an alphanumeric character or * underscore (_), for example, BadBot;.

  • * TargetString is at the end of the specified part of the web request * and is preceded by a character other than an alphanumeric character or * underscore (_), for example, ;BadBot.

  • * TargetString is in the middle of the specified part of the web * request and is preceded and followed by characters other than alphanumeric * characters or underscore (_), for example, -BadBot;.

  • *

EXACTLY

The value of the specified part of the web * request must exactly match the value of TargetString.

* STARTS_WITH

The value of TargetString must appear at * the beginning of the specified part of the web request.

ENDS_WITH *

The value of TargetString must appear at the end of the * specified part of the web request.

*/ inline bool PositionalConstraintHasBeenSet() const { return m_positionalConstraintHasBeenSet; } /** *

Within the portion of a web request that you want to search (for example, in * the query string, if any), specify where you want AWS WAF to search. Valid * values include the following:

CONTAINS

The specified part * of the web request must include the value of TargetString, but the * location doesn't matter.

CONTAINS_WORD

The specified part * of the web request must include the value of TargetString, and * TargetString must contain only alphanumeric characters or * underscore (A-Z, a-z, 0-9, or _). In addition, TargetString must be * a word, which means one of the following:

  • * TargetString exactly matches the value of the specified part of the * web request, such as the value of a header.

  • * TargetString is at the beginning of the specified part of the web * request and is followed by a character other than an alphanumeric character or * underscore (_), for example, BadBot;.

  • * TargetString is at the end of the specified part of the web request * and is preceded by a character other than an alphanumeric character or * underscore (_), for example, ;BadBot.

  • * TargetString is in the middle of the specified part of the web * request and is preceded and followed by characters other than alphanumeric * characters or underscore (_), for example, -BadBot;.

  • *

EXACTLY

The value of the specified part of the web * request must exactly match the value of TargetString.

* STARTS_WITH

The value of TargetString must appear at * the beginning of the specified part of the web request.

ENDS_WITH *

The value of TargetString must appear at the end of the * specified part of the web request.

*/ inline void SetPositionalConstraint(const PositionalConstraint& value) { m_positionalConstraintHasBeenSet = true; m_positionalConstraint = value; } /** *

Within the portion of a web request that you want to search (for example, in * the query string, if any), specify where you want AWS WAF to search. Valid * values include the following:

CONTAINS

The specified part * of the web request must include the value of TargetString, but the * location doesn't matter.

CONTAINS_WORD

The specified part * of the web request must include the value of TargetString, and * TargetString must contain only alphanumeric characters or * underscore (A-Z, a-z, 0-9, or _). In addition, TargetString must be * a word, which means one of the following:

  • * TargetString exactly matches the value of the specified part of the * web request, such as the value of a header.

  • * TargetString is at the beginning of the specified part of the web * request and is followed by a character other than an alphanumeric character or * underscore (_), for example, BadBot;.

  • * TargetString is at the end of the specified part of the web request * and is preceded by a character other than an alphanumeric character or * underscore (_), for example, ;BadBot.

  • * TargetString is in the middle of the specified part of the web * request and is preceded and followed by characters other than alphanumeric * characters or underscore (_), for example, -BadBot;.

  • *

EXACTLY

The value of the specified part of the web * request must exactly match the value of TargetString.

* STARTS_WITH

The value of TargetString must appear at * the beginning of the specified part of the web request.

ENDS_WITH *

The value of TargetString must appear at the end of the * specified part of the web request.

*/ inline void SetPositionalConstraint(PositionalConstraint&& value) { m_positionalConstraintHasBeenSet = true; m_positionalConstraint = std::move(value); } /** *

Within the portion of a web request that you want to search (for example, in * the query string, if any), specify where you want AWS WAF to search. Valid * values include the following:

CONTAINS

The specified part * of the web request must include the value of TargetString, but the * location doesn't matter.

CONTAINS_WORD

The specified part * of the web request must include the value of TargetString, and * TargetString must contain only alphanumeric characters or * underscore (A-Z, a-z, 0-9, or _). In addition, TargetString must be * a word, which means one of the following:

  • * TargetString exactly matches the value of the specified part of the * web request, such as the value of a header.

  • * TargetString is at the beginning of the specified part of the web * request and is followed by a character other than an alphanumeric character or * underscore (_), for example, BadBot;.

  • * TargetString is at the end of the specified part of the web request * and is preceded by a character other than an alphanumeric character or * underscore (_), for example, ;BadBot.

  • * TargetString is in the middle of the specified part of the web * request and is preceded and followed by characters other than alphanumeric * characters or underscore (_), for example, -BadBot;.

  • *

EXACTLY

The value of the specified part of the web * request must exactly match the value of TargetString.

* STARTS_WITH

The value of TargetString must appear at * the beginning of the specified part of the web request.

ENDS_WITH *

The value of TargetString must appear at the end of the * specified part of the web request.

*/ inline ByteMatchTuple& WithPositionalConstraint(const PositionalConstraint& value) { SetPositionalConstraint(value); return *this;} /** *

Within the portion of a web request that you want to search (for example, in * the query string, if any), specify where you want AWS WAF to search. Valid * values include the following:

CONTAINS

The specified part * of the web request must include the value of TargetString, but the * location doesn't matter.

CONTAINS_WORD

The specified part * of the web request must include the value of TargetString, and * TargetString must contain only alphanumeric characters or * underscore (A-Z, a-z, 0-9, or _). In addition, TargetString must be * a word, which means one of the following:

  • * TargetString exactly matches the value of the specified part of the * web request, such as the value of a header.

  • * TargetString is at the beginning of the specified part of the web * request and is followed by a character other than an alphanumeric character or * underscore (_), for example, BadBot;.

  • * TargetString is at the end of the specified part of the web request * and is preceded by a character other than an alphanumeric character or * underscore (_), for example, ;BadBot.

  • * TargetString is in the middle of the specified part of the web * request and is preceded and followed by characters other than alphanumeric * characters or underscore (_), for example, -BadBot;.

  • *

EXACTLY

The value of the specified part of the web * request must exactly match the value of TargetString.

* STARTS_WITH

The value of TargetString must appear at * the beginning of the specified part of the web request.

ENDS_WITH *

The value of TargetString must appear at the end of the * specified part of the web request.

*/ inline ByteMatchTuple& WithPositionalConstraint(PositionalConstraint&& value) { SetPositionalConstraint(std::move(value)); return *this;} private: FieldToMatch m_fieldToMatch; bool m_fieldToMatchHasBeenSet = false; Aws::Utils::ByteBuffer m_targetString; bool m_targetStringHasBeenSet = false; TextTransformation m_textTransformation; bool m_textTransformationHasBeenSet = false; PositionalConstraint m_positionalConstraint; bool m_positionalConstraintHasBeenSet = false; }; } // namespace Model } // namespace WAF } // namespace Aws