/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ /* * Do not modify this file. This file is generated from the wafv2-2019-07-29.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using System.Net; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.WAFV2.Model { /// /// A rule statement that defines a string match search for WAF to apply to web requests. /// The byte match statement provides the bytes to search for, the location in requests /// that you want WAF to search, and other settings. The bytes to search for are typically /// a string that corresponds with ASCII characters. In the WAF console and the developer /// guide, this is called a string match statement. /// public partial class ByteMatchStatement { private FieldToMatch _fieldToMatch; private PositionalConstraint _positionalConstraint; private MemoryStream _searchString; private List _textTransformations = new List(); /// /// Gets and sets the property FieldToMatch. /// /// The part of the web request that you want WAF to inspect. /// /// [AWSProperty(Required=true)] public FieldToMatch FieldToMatch { get { return this._fieldToMatch; } set { this._fieldToMatch = value; } } // Check to see if FieldToMatch property is set internal bool IsSetFieldToMatch() { return this._fieldToMatch != null; } /// /// Gets and sets the property PositionalConstraint. /// /// The area within the portion of the web request that you want WAF to search for SearchString. /// Valid values include the following: /// /// /// /// CONTAINS /// /// /// /// The specified part of the web request must include the value of SearchString, /// but the location doesn't matter. /// /// /// /// CONTAINS_WORD /// /// /// /// The specified part of the web request must include the value of SearchString, /// and SearchString must contain only alphanumeric characters or underscore /// (A-Z, a-z, 0-9, or _). In addition, SearchString must be a word, which /// means that both of the following are true: /// ///
  • /// /// SearchString is at the beginning of the specified part of the web request /// or is preceded by a character other than an alphanumeric character or underscore (_). /// Examples include the value of a header and ;BadBot. /// ///
  • /// /// SearchString is at the end of the specified part of the web request /// or is followed by a character other than an alphanumeric character or underscore (_), /// for example, BadBot; and -BadBot;. /// ///
/// /// EXACTLY /// /// /// /// The value of the specified part of the web request must exactly match the value of /// SearchString. /// /// /// /// STARTS_WITH /// /// /// /// The value of SearchString must appear at the beginning of the specified /// part of the web request. /// /// /// /// ENDS_WITH /// /// /// /// The value of SearchString must appear at the end of the specified part /// of the web request. /// ///
[AWSProperty(Required=true)] public PositionalConstraint PositionalConstraint { get { return this._positionalConstraint; } set { this._positionalConstraint = value; } } // Check to see if PositionalConstraint property is set internal bool IsSetPositionalConstraint() { return this._positionalConstraint != null; } /// /// Gets and sets the property SearchString. /// /// A string value that you want WAF to search for. WAF searches only in the part of web /// requests that you designate for inspection in FieldToMatch. The maximum length /// of the value is 200 bytes. /// /// /// /// Valid values depend on the component that you specify for inspection in FieldToMatch: /// ///
  • /// /// Method: The HTTP method that you want WAF to search for. This indicates /// the type of operation specified in the request. /// ///
  • /// /// UriPath: The value that you want WAF to search for in the URI path, /// for example, /images/daily-ad.jpg. /// ///
  • /// /// HeaderOrder: The comma-separated list of header names to match for. /// WAF creates a string that contains the ordered list of header names, from the headers /// in the web request, and then matches against that string. /// ///
/// /// If SearchString includes alphabetic characters A-Z and a-z, note that /// the value is case sensitive. /// /// /// /// If you're using the WAF API /// /// /// /// Specify a base64-encoded version of the value. The maximum length of the value before /// you base64-encode it is 200 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 SearchString. /// /// /// /// If you're using the CLI or one of the Amazon Web Services SDKs /// /// /// /// The value that you want WAF to search for. The SDK automatically base64 encodes the /// value. /// ///
[AWSProperty(Required=true)] public MemoryStream SearchString { get { return this._searchString; } set { this._searchString = value; } } // Check to see if SearchString property is set internal bool IsSetSearchString() { return this._searchString != null; } /// /// Gets and sets the property 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. /// /// [AWSProperty(Required=true, Min=1)] public List TextTransformations { get { return this._textTransformations; } set { this._textTransformations = value; } } // Check to see if TextTransformations property is set internal bool IsSetTextTransformations() { return this._textTransformations != null && this._textTransformations.Count > 0; } } }