AWS WAFv2 determine header order

0

I am wondering if it is possible to determine the header key order in the request then use this value in rules?

For example the header object would contain the following

HeadHead
httpRequest.headers.0.nameHost
httpRequest.headers.0.valueapi.test.com
httpRequest.headers.1.nameuser-agent
httpRequest.headers.1.valueMozilla/5.0 (Linux; Android 10; SM-A217F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36

I want to check httpRequest.headers.1.name to see if this was user-agent

HieuVu
已提问 2 年前424 查看次数
2 回答
0

Hello HieuVu,

Well, the order your seeing is a interpret format of the request for log view (ie., For Reading purpose and Filtering purpose in CW or Athena).

Thus, at any point of time WAF only sees Key:Value (Ie., User-Agent:Mozilla/5.0...) header components NOT the order of the HTTP components.

https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-fields.html

Regards, CK

profile pictureAWS
已回答 2 年前
  • Hi Chethan,

    I understand that it is an interpret format, my questions is, if it is possible to determine the order that headers are in the headers, so either see what the second header is or determining what order did user-agent get sent in.

0

Hello HieuVu,

AWS WAF now supports Header Order match statement for request inspection

https://aws.amazon.com/tw/about-aws/whats-new/2023/06/aws-waf-header-order-match-statement-request-inspection/

AWS WAF separates the header names in the string using colons and no added spaces, for example

host:user-agent:accept:authorization:referer

In your use case, you can configure WAF rule like this:

host:user-agent with PositionalConstraint STARTS_WITH

Here is example WAF rule JSON

{
  "Name": "testheaderorder",
  "Priority": 0,
  "Action": {
    "Count": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "testheaderorder"
  },
  "Statement": {
    "ByteMatchStatement": {
      "FieldToMatch": {
        "HeaderOrder": {
          "OversizeHandling": "CONTINUE"
        }
      },
      "PositionalConstraint": "STARTS_WITH",
      "SearchString": "host:user-agent",
      "TextTransformations": [
        {
          "Type": "NONE",
          "Priority": 0
        }
      ]
    }
  }
}

To find more information regrading HeaderOrder , see:

HeaderOrder

https://docs.aws.amazon.com/waf/latest/APIReference/API_HeaderOrder.html

AWS Web Application Firewall (WAF): Header Order Match Statement | Amazon Web Services

https://www.youtube.com/watch?v=gZtGBhXlgIo

profile pictureAWS
Mark_W
已回答 9 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则