Skip to content

ByteMatchSet ​

The ByteMatchSet resource lets you manage AWS WAFRegional ByteMatchSets which are used to specify a sequence of bytes that you want AWS WAF to search for in web requests.

Minimal Example ​

Create a basic ByteMatchSet with a name and a single ByteMatchTuple.

ts
import AWS from "alchemy/aws/control";

const basicByteMatchSet = await AWS.WAFRegional.ByteMatchSet("basicByteMatchSet", {
  Name: "BasicByteMatchSet",
  ByteMatchTuples: [{
    FieldToMatch: {
      Type: "HEADER",
      Data: "User-Agent"
    },
    TargetString: "BadBot",
    PositionalConstraint: "CONTAINS",
    TextTransformation: "NONE"
  }]
});

Advanced Configuration ​

Configure a ByteMatchSet with multiple ByteMatchTuples and various settings.

ts
const advancedByteMatchSet = await AWS.WAFRegional.ByteMatchSet("advancedByteMatchSet", {
  Name: "AdvancedByteMatchSet",
  ByteMatchTuples: [
    {
      FieldToMatch: {
        Type: "URI",
        Data: "/login"
      },
      TargetString: "malicious",
      PositionalConstraint: "EXACTLY",
      TextTransformation: "NONE"
    },
    {
      FieldToMatch: {
        Type: "BODY",
        Data: ""
      },
      TargetString: "attack",
      PositionalConstraint: "CONTAINS",
      TextTransformation: "URL_DECODE"
    }
  ]
});

Use Case: Protect Against SQL Injection ​

Create a ByteMatchSet specifically designed to protect against SQL injection attacks.

ts
const sqlInjectionByteMatchSet = await AWS.WAFRegional.ByteMatchSet("sqlInjectionByteMatchSet", {
  Name: "SQLInjectionProtectionSet",
  ByteMatchTuples: [
    {
      FieldToMatch: {
        Type: "QUERY_STRING",
        Data: ""
      },
      TargetString: "' OR '1'='1",
      PositionalConstraint: "CONTAINS",
      TextTransformation: "URL_DECODE"
    },
    {
      FieldToMatch: {
        Type: "BODY",
        Data: ""
      },
      TargetString: "--",
      PositionalConstraint: "CONTAINS",
      TextTransformation: "NONE"
    }
  ]
});

Use Case: Block Specific User Agents ​

Define a ByteMatchSet to block requests from specific user agents.

ts
const userAgentBlockSet = await AWS.WAFRegional.ByteMatchSet("userAgentBlockSet", {
  Name: "UserAgentBlockSet",
  ByteMatchTuples: [
    {
      FieldToMatch: {
        Type: "HEADER",
        Data: "User-Agent"
      },
      TargetString: "BadBot",
      PositionalConstraint: "CONTAINS",
      TextTransformation: "NONE"
    },
    {
      FieldToMatch: {
        Type: "HEADER",
        Data: "User-Agent"
      },
      TargetString: "Scraper",
      PositionalConstraint: "CONTAINS",
      TextTransformation: "NONE"
    }
  ]
});