Fortinet white logo
Fortinet white logo

CLI Reference

waf threshold-based-detection

waf threshold-based-detection

Use this command to configure threshold based detection rules to define occurrence, time period, severity, and trigger policy, etc of the following suspicious behaviors, and thus FortiWeb judges whether the request comes from a human or a bot.

  • Crawler

    Detects automated web crawlers that systematically scan and index web content. FortiWeb identifies repeated access patterns characteristic of bots, such as excessive page traversal within a short timeframe.

  • Vulnerability Scanning

    Detects behavior that matches known patterns of security scanners (e.g., SQLMap, Acunetix). These tools typically probe for common vulnerabilities across multiple endpoints, often using unusual headers, query strings, or access frequencies.

  • Slow Attack

    Detects Layer 7 denial-of-service (DoS) attempts where an attacker sends HTTP requests very slowly to tie up server-side resources. FortiWeb supports detection of both:

    • Slow Body Attacks: The attacker sends the request body at a very slow rate to prolong the session and exhaust server resources.

    • Slow Header Attacks: The attacker delays transmission of HTTP headers, preventing the server from completing request parsing. FortiWeb uses TCP-layer packet interval analysis to identify such behavior.

    Both types share the same configuration parameters in the detection profile. When detection is triggered, FortiWeb applies the configured action (e.g., Deny, Period Block). Note that header-based detection is performed at the TCP layer and does not support features that require complete HTTP context, such as Real Browser Enforcement or Tracking by Client ID.

  • Content Scraping

    Detects bots that systematically copy web page content, often for competitive or malicious purposes. FortiWeb monitors request frequency and depth across similar URLs to identify scraping behavior.

  • Illegal User Scan

    Identifies repeated attempts to enumerate users or discover valid accounts, typically through brute-force or enumeration techniques.

Syntax

config waf threshold-based-detection

edit "<policy_name>"

set tracking-type {client-ip | client-id}

set bot-recognition {disabled | real-browser-enforcement | captcha-enforcement | captcha-puzzle-enforcement | recaptcha-enforcement | recaptcha-v3-enforcement }

set recaptcha <recaptcha_server_name>

set mobile-app-identification {disabled | mobile-token-validation}

set bot-confirmation {enable | disable}

set validation-timeout <validation-timeout_int>

set set set max-attempt-times <max-attempt-times_int>

set crawler-detection {enable | disable}

set crawler-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period}

set crawler-severity {High | Medium | Low | Info}

set crawler-trigger <crawler-trigger-policy_name>

set crawler-occurrence-num <crawler-occurrence-num_int>

set crawler-within <crawler-within_int>

set crawler-block-period <crawler-block-period_int>

set scanner-detection {enable | disable}

set scanner-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period}

set scanner-severity {High | Medium | Low | Info}

set crawler-trigger <crawler-trigger-policy_name>

set scanner-occurrence-num <scanner-occurrence-num_int>

set scanner-within <scanner-within_int>

set scanner-block-period <scanner-block-period_int>

set slow-attack-detection {enable | disable}

set slow-attack-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period}

set slow-attack-severity {High | Medium | Low | Info}

set slow-attack-trigger <slow-attack-trigger-policy_name>

set slow-attack-occurrence-num <slow-attack-occurrence-num_int>

set slow-attack-within <slow-attack-within_int>

set slow-attack-HTTP-transaction-timeout <slow-attack-HTTP-transaction-timeout_int>

set slow-attack-packet-interval-timeout <slow-attack-packet-interval-timeout_int>

set slow-attack-block-period <slow-attack-block-period_int>

set content-scraping-detection {enable | disable}

set content-scraping-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period}

set content-scraping-severity {High | Medium | Low | Info}

set content-scraping-trigger <content-scraping-trigger-policy_name>

set content-scraping-occurrence-num <content-scraping-occurrence-num_int>

set content-scraping-within <content-scraping-within_int>

set content-scraping-block-period <content-scraping-block-period_int>

set keep-occurrence-count {enable | disable}

next

end

Variable Description Default

"<policy_name>"

Enter a name for the threshold based detection rule that can be referenced in bot mitigation policy.

No default.

tracking-type {client-ip | client-id}

Specifies the method FortiWeb uses to track request occurrences for each threshold-based detection module.

Options:

  • client-ip — Tracks occurrences based on the source IP address.

  • client-id — Tracks occurrences using cookies issued by the Client Management feature, allowing consistent client identification across sessions and IP changes.

Behavior and Requirements:
  • client-id tracking mode requires Client Management to be enabled in the associated protection profile.

  • When client-id is selected:

    • The Client ID Block Period action becomes available.

    • The standard Block Period option is hidden from action settings.

  • When client-ip is selected:

    • Only the standard Block Period action is available.

    • Client ID Block Period option is hidden.

Note:

When a Slow Header Attack is detected, FortiWeb always falls back to IP-based tracking, even if client-id tracking is selected. This is because HTTP-layer information (such as the Client Management cookie) is not yet available during early-stage header processing. In such cases, any action configured as Client ID Block Period is automatically treated as IP-based Period Block.

client-ip

bot-recognition {disabled | real-browser-enforcement | captcha-enforcement | captcha-puzzle-enforcement | recaptcha-enforcement | recaptcha-v3-enforcement }

Select between:

  • captcha-enforcement—Requires the client to successfully fulfill a CAPTCHA request. If the client cannot successfully fulfill the request within the , or doesn't fulfill the request within the validation-timeout <validation-timeout_int>, FortiWeb applies the action and sends the CAPTCHA block page.

  • captcha-puzzle-enforcement—Presents an interactive image-based puzzle challenge to the user. This method is resistant to headless browsers and scripted bots, and is suitable for high-security scenarios where traditional challenges are easily bypassed. If the client doesn't fulfill the request within the validation-timeout <validation-timeout_int>, FortiWeb applies the action.
    When selected:
    • FortiWeb intercepts the request and serves a visual CAPTCHA that requires drag-and-drop interaction before allowing access to the backend.
    • The original backend response is cached by FortiWeb and only delivered after the user successfully completes the challenge.
    • No customization of the puzzle or replacement message is currently supported.
  • real-browser-enforcement—Enable to return a JavaScript to the client to test whether it is a web browser or automated tool when it violates the access rule. If the client either fails the test or does not return results before the timeout specified by the validation-timeout <validation-timeout_int>, FortiWeb applies the specified action. If the client appears to be a web browser, FortiWeb allows the client to violate the rule.

  • recaptcha-enforcement—Requires the client to successfully fulfill a reCAPTCHA request. If the client doesn't fulfill the request within the validation-timeout <validation-timeout_int>, FortiWeb applies the action and sends the CAPTCHA block page.

  • recaptcha-v3-enforcement: Requires the client to successfully fulfill a reCAPTCHA v3 request. If the client cannot successfully fulfill the request within the Validation Timeout, FortiWeb applies the Action and sends the reCAPTCHA block page. For details, see "Customizing error and authentication pages (replacement messages)" in FortiWeb Administration Guide.
    You can set the threshold of the reCAPTCHA v3 score through CLI

    config system recaptcha-api

    set recaptcha-v3-score-threshold <string> *The value range is 0 to 1

    end

  • disable—Not to carry out the bot verification.
    Note: When a Slow Header Attack is detected, FortiWeb automatically disables Real Browser Enforcement, regardless of this setting. Because slow header attacks involve incomplete or malformed requests, they are not compatible with browser validation.

disable

recaptcha <recaptcha_server_name>

Enter the reCAPTCHA server you have created through user recaptcha-user

No default.

mobile-app-identification {disabled | mobile-token-validation}

  • disabledNot to carry out the mobile token verification.
    Note: When a Slow Header Attack is detected, FortiWeb automatically disables Real Browser Enforcement, regardless of this setting. Because slow header attacks involve incomplete or malformed requests, they are not compatible with browser validation.
  • mobile-token-validationRequires the client to use mobile token to verify whether the traffic is from mobile devices.
    To apply mobile token validation, you must enable mobile-app-identification in waf web-protection-profile inline-protection.

disable

bot-confirmation {enable | disable}

Enable to confirm if the client is indeed a bot. The system sends RBE (Real Browser Enforcement) JavaScript or CAPTCHA to the client to double check if it's a bot.

disable

validation-timeout <validation-timeout_int>

Enter the maximum amount of time (in seconds) that FortiWeb waits for results from the client.

Available only when the bot-recognition {disabled | real-browser-enforcement | captcha-enforcement | captcha-puzzle-enforcement | recaptcha-enforcement | recaptcha-v3-enforcement } is browser-enforcement, captcha-enforcement, or captcha-puzzle-enforcement.

20

crawler-detection {enable | disable}

Enable to detect tools that browse your web site for indexing purposes.

enable

crawler-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period}

Select which action FortiWeb will take when it detects a crawler:

  • alert—Accept the connection and generate an alert email and/or log message.
  • alert_deny—Block the request (or reset the connection) and generate an alert and/or log message.
  • deny_no_log—Block the request (or reset the connection).
  • block-period—Block subsequent requests from the client for a number of seconds. Also configure crawler-block-period <crawler-block-period_int>.
  • client-id-block-period—Block a malicious or suspicious client based on the FortiWeb generated client ID. This is useful when the source IP of a certain client keeps changing. This option takes effect only when you enable Client Management in the Server Policy. Also configure crawler-block-period <crawler-block-period_int>.

alert

crawler-severity {High | Medium | Low | Info}

When policy violations are recorded in the attack log, each log message contains a Severity Level (severity_level) field. Select which severity level FortiWeb will use when it logs a crawler:

  • Informative
  • Low
  • Medium
  • High

Medium

crawler-trigger <crawler-trigger-policy_name>

Select the trigger, if any, that FortiWeb will use when it logs and/or sends an alert email about a crawler. For details, see "Viewing log messages" on page 1.

No default.

crawler-occurrence-num <crawler-occurrence-num_int>

Define the frequency that FortiWeb detects 403 and 404 response codes returned by the web server.

100

crawler-within <crawler-within_int>

Specify the time period, in seconds, during which FortiWeb detects the 403 and 404 response codes.

10

crawler-block-period <crawler-block-period_int>

Enter the number of seconds that you want to block subsequent requests from a client after FortiWeb detects a crawler. The valid range is 1–3,600 seconds.

Available only if crawler-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period} is set to block-period or client-id-block-period.

600

scanner-detection {enable | disable}

Enable to detect tools that scan your web site for vulnerabilities.

disable

scanner-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period}

Select which action FortiWeb will take when it detects attack signatures:

  • alert—Accept the connection and generate an alert email and/or log message.
  • alert_deny—Block the request (or reset the connection) and generate an alert and/or log message.
  • deny_no_log—Block the request (or reset the connection).
  • block-period—Block subsequent requests from the client for a number of seconds. Also configure scanner-block-period <scanner-block-period_int>.
  • client-id-block-period—Block a malicious or suspicious client based on the FortiWeb generated client ID. This is useful when the source IP of a certain client keeps changing. This option takes effect only when you enable Client Management in the Server Policy. Also configure scanner-block-period <scanner-block-period_int>.

alert

scanner-severity {High | Medium | Low | Info}

When policy violations are recorded in the attack log, each log message contains a Severity Level (severity_level) field. Select which severity level FortiWeb will use when it logs attack signatures:

  • Informative
  • Low
  • Medium
  • High

Medium

scanner-trigger <scanner-trigger-policy_name>

Select the trigger, if any, that FortiWeb will use when it logs and/or sends an alert email about attack signatures. For details, see "Viewing log messages" on page 1.

No default.

scanner-occurrence-num <scanner-occurrence-num_int>

Define the frequency that FortiWeb detects attack signatures.

100

scanner-within <scanner-within_int>

Specify the time period, in seconds, during which FortiWeb monitors the attack signatures.

10

scanner-block-period <scanner-block-period_int>

Enter the number of seconds that you want to block subsequent requests from a client after FortiWeb detects attack signatures. The valid range is 1–3,600 seconds.

Available only if scanner-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period} is set to block-period or client-id-block-period.

600

slow-attack-detection {enable | disable}

Enable to detect Denial of Service tools that try to go undetected by generating a small stream of traffic.

disable

slow-attack-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period}

Select which action FortiWeb will take when it detects slow attack activities:

  • alert—Accept the connection and generate an alert email and/or log message.
  • alert_deny—Block the request (or reset the connection) and generate an alert and/or log message.
  • deny_no_log—Block the request (or reset the connection).
  • block-period—Block subsequent requests from the client for a number of seconds. Also configure slow-attack-block-period <slow-attack-block-period_int>.
  • client-id-block-period—Block a malicious or suspicious client based on the FortiWeb generated client ID. This is useful when the source IP of a certain client keeps changing. This option takes effect only when you enable Client Management in the Server Policy. Also configure slow-attack-block-period <slow-attack-block-period_int>.
    When a Slow Header Attack is detected, FortiWeb automatically falls back to Client IP for occurrence tracking. If the configured action is Client ID Block Period, it will be enforced as an IP-based Period Block instead.

alert

slow-attack-severity {High | Medium | Low | Info}

When policy violations are recorded in the attack log, each log message contains a Severity Level (severity_level) field. Select which severity level FortiWeb will use when it logs slow attack activities:

  • Informative
  • Low
  • Medium
  • High

Medium

slow-attack-trigger <slow-attack-trigger-policy_name>

Select the trigger, if any, that FortiWeb will use when it logs and/or sends an alert email about slow attack activities. For details, see "Viewing log messages" on page 1.

No default.

slow-attack-occurrence-num <slow-attack-occurrence-num_int>

Define the frequency that FortiWeb detects slow attack activities.

5

slow-attack-within <slow-attack-within_int>

Specify the time period, in seconds, during which FortiWeb detects slow attack activities.

100

slow-attack-HTTP-transaction-timeout <slow-attack-HTTP-transaction-timeout_int>

Specify a timeout value, in seconds, for the HTTP transaction.

60

slow-attack-packet-interval-timeout <slow-attack-packet-interval-timeout_int>

Specify the timeout value, in seconds, for interval between packets arriving from either the client or server (request or response packets).

10

slow-attack-block-period <slow-attack-block-period_int>

Enter the number of seconds that you want to block subsequent requests from a client after FortiWeb detects slow attack activities. The valid range is 1–3,600 seconds.

Available only if slow-attack-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period} is set to block-period or client-id-block-period.

600

content-scraping-detection {enable | disable}

Enable to detect bots that illegally copy contents from your web site.

disable

content-scraping-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period}

Select which action FortiWeb will take when it detects content scraping activities:

  • alert—Accept the connection and generate an alert email and/or log message.
  • alert_deny—Block the request (or reset the connection) and generate an alert and/or log message.
  • deny_no_log—Block the request (or reset the connection).
  • block-period—Block subsequent requests from the client for a number of seconds. Also configure content-scraping-block-period <content-scraping-block-period_int>.
  • client-id-block-period—Block a malicious or suspicious client based on the FortiWeb generated client ID. This is useful when the source IP of a certain client keeps changing. This option takes effect only when you enable Client Management in the Server Policy. Also configure content-scraping-block-period <content-scraping-block-period_int>.

alert

content-scraping-severity {High | Medium | Low | Info}

When policy violations are recorded in the attack log, each log message contains a Severity Level (severity_level) field. Select which severity level FortiWeb will use when it logs content scraping activities:

  • Informative
  • Low
  • Medium
  • High

Medium

content-scraping-trigger <content-scraping-trigger-policy_name>

Select the trigger, if any, that FortiWeb will use when it logs and/or sends an alert email about content scraping activities. For details, see "Viewing log messages" on page 1.

No default.

content-scraping-occurrence-num <content-scraping-occurrence-num_int>

Define the frequency that FortiWeb detects content scraping activities.

100

content-scraping-within <content-scraping-within_int>

Specify the time period, in seconds, during which FortiWeb detects content scraping activities.

30

content-scraping-block-period <content-scraping-block-period_int>

Enter the number of seconds that you want to block subsequent requests from a client after FortiWeb detects content scraping activities. The valid range is 1–3,600 seconds.

Available only if content-scraping-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period} is set to block-period or client-id-block-period.

600

keep-occurrence-count {enable | disable}

Enable this option so that the threshold counter will not be reset throughout the Within (Seconds) timeframe. FortiWeb can continue denying or period-blocking the client as long as it has ever reached the threshold within the "Within (Seconds)" timeframe.

disable

Related Topics

waf threshold-based-detection

waf threshold-based-detection

Use this command to configure threshold based detection rules to define occurrence, time period, severity, and trigger policy, etc of the following suspicious behaviors, and thus FortiWeb judges whether the request comes from a human or a bot.

  • Crawler

    Detects automated web crawlers that systematically scan and index web content. FortiWeb identifies repeated access patterns characteristic of bots, such as excessive page traversal within a short timeframe.

  • Vulnerability Scanning

    Detects behavior that matches known patterns of security scanners (e.g., SQLMap, Acunetix). These tools typically probe for common vulnerabilities across multiple endpoints, often using unusual headers, query strings, or access frequencies.

  • Slow Attack

    Detects Layer 7 denial-of-service (DoS) attempts where an attacker sends HTTP requests very slowly to tie up server-side resources. FortiWeb supports detection of both:

    • Slow Body Attacks: The attacker sends the request body at a very slow rate to prolong the session and exhaust server resources.

    • Slow Header Attacks: The attacker delays transmission of HTTP headers, preventing the server from completing request parsing. FortiWeb uses TCP-layer packet interval analysis to identify such behavior.

    Both types share the same configuration parameters in the detection profile. When detection is triggered, FortiWeb applies the configured action (e.g., Deny, Period Block). Note that header-based detection is performed at the TCP layer and does not support features that require complete HTTP context, such as Real Browser Enforcement or Tracking by Client ID.

  • Content Scraping

    Detects bots that systematically copy web page content, often for competitive or malicious purposes. FortiWeb monitors request frequency and depth across similar URLs to identify scraping behavior.

  • Illegal User Scan

    Identifies repeated attempts to enumerate users or discover valid accounts, typically through brute-force or enumeration techniques.

Syntax

config waf threshold-based-detection

edit "<policy_name>"

set tracking-type {client-ip | client-id}

set bot-recognition {disabled | real-browser-enforcement | captcha-enforcement | captcha-puzzle-enforcement | recaptcha-enforcement | recaptcha-v3-enforcement }

set recaptcha <recaptcha_server_name>

set mobile-app-identification {disabled | mobile-token-validation}

set bot-confirmation {enable | disable}

set validation-timeout <validation-timeout_int>

set set set max-attempt-times <max-attempt-times_int>

set crawler-detection {enable | disable}

set crawler-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period}

set crawler-severity {High | Medium | Low | Info}

set crawler-trigger <crawler-trigger-policy_name>

set crawler-occurrence-num <crawler-occurrence-num_int>

set crawler-within <crawler-within_int>

set crawler-block-period <crawler-block-period_int>

set scanner-detection {enable | disable}

set scanner-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period}

set scanner-severity {High | Medium | Low | Info}

set crawler-trigger <crawler-trigger-policy_name>

set scanner-occurrence-num <scanner-occurrence-num_int>

set scanner-within <scanner-within_int>

set scanner-block-period <scanner-block-period_int>

set slow-attack-detection {enable | disable}

set slow-attack-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period}

set slow-attack-severity {High | Medium | Low | Info}

set slow-attack-trigger <slow-attack-trigger-policy_name>

set slow-attack-occurrence-num <slow-attack-occurrence-num_int>

set slow-attack-within <slow-attack-within_int>

set slow-attack-HTTP-transaction-timeout <slow-attack-HTTP-transaction-timeout_int>

set slow-attack-packet-interval-timeout <slow-attack-packet-interval-timeout_int>

set slow-attack-block-period <slow-attack-block-period_int>

set content-scraping-detection {enable | disable}

set content-scraping-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period}

set content-scraping-severity {High | Medium | Low | Info}

set content-scraping-trigger <content-scraping-trigger-policy_name>

set content-scraping-occurrence-num <content-scraping-occurrence-num_int>

set content-scraping-within <content-scraping-within_int>

set content-scraping-block-period <content-scraping-block-period_int>

set keep-occurrence-count {enable | disable}

next

end

Variable Description Default

"<policy_name>"

Enter a name for the threshold based detection rule that can be referenced in bot mitigation policy.

No default.

tracking-type {client-ip | client-id}

Specifies the method FortiWeb uses to track request occurrences for each threshold-based detection module.

Options:

  • client-ip — Tracks occurrences based on the source IP address.

  • client-id — Tracks occurrences using cookies issued by the Client Management feature, allowing consistent client identification across sessions and IP changes.

Behavior and Requirements:
  • client-id tracking mode requires Client Management to be enabled in the associated protection profile.

  • When client-id is selected:

    • The Client ID Block Period action becomes available.

    • The standard Block Period option is hidden from action settings.

  • When client-ip is selected:

    • Only the standard Block Period action is available.

    • Client ID Block Period option is hidden.

Note:

When a Slow Header Attack is detected, FortiWeb always falls back to IP-based tracking, even if client-id tracking is selected. This is because HTTP-layer information (such as the Client Management cookie) is not yet available during early-stage header processing. In such cases, any action configured as Client ID Block Period is automatically treated as IP-based Period Block.

client-ip

bot-recognition {disabled | real-browser-enforcement | captcha-enforcement | captcha-puzzle-enforcement | recaptcha-enforcement | recaptcha-v3-enforcement }

Select between:

  • captcha-enforcement—Requires the client to successfully fulfill a CAPTCHA request. If the client cannot successfully fulfill the request within the , or doesn't fulfill the request within the validation-timeout <validation-timeout_int>, FortiWeb applies the action and sends the CAPTCHA block page.

  • captcha-puzzle-enforcement—Presents an interactive image-based puzzle challenge to the user. This method is resistant to headless browsers and scripted bots, and is suitable for high-security scenarios where traditional challenges are easily bypassed. If the client doesn't fulfill the request within the validation-timeout <validation-timeout_int>, FortiWeb applies the action.
    When selected:
    • FortiWeb intercepts the request and serves a visual CAPTCHA that requires drag-and-drop interaction before allowing access to the backend.
    • The original backend response is cached by FortiWeb and only delivered after the user successfully completes the challenge.
    • No customization of the puzzle or replacement message is currently supported.
  • real-browser-enforcement—Enable to return a JavaScript to the client to test whether it is a web browser or automated tool when it violates the access rule. If the client either fails the test or does not return results before the timeout specified by the validation-timeout <validation-timeout_int>, FortiWeb applies the specified action. If the client appears to be a web browser, FortiWeb allows the client to violate the rule.

  • recaptcha-enforcement—Requires the client to successfully fulfill a reCAPTCHA request. If the client doesn't fulfill the request within the validation-timeout <validation-timeout_int>, FortiWeb applies the action and sends the CAPTCHA block page.

  • recaptcha-v3-enforcement: Requires the client to successfully fulfill a reCAPTCHA v3 request. If the client cannot successfully fulfill the request within the Validation Timeout, FortiWeb applies the Action and sends the reCAPTCHA block page. For details, see "Customizing error and authentication pages (replacement messages)" in FortiWeb Administration Guide.
    You can set the threshold of the reCAPTCHA v3 score through CLI

    config system recaptcha-api

    set recaptcha-v3-score-threshold <string> *The value range is 0 to 1

    end

  • disable—Not to carry out the bot verification.
    Note: When a Slow Header Attack is detected, FortiWeb automatically disables Real Browser Enforcement, regardless of this setting. Because slow header attacks involve incomplete or malformed requests, they are not compatible with browser validation.

disable

recaptcha <recaptcha_server_name>

Enter the reCAPTCHA server you have created through user recaptcha-user

No default.

mobile-app-identification {disabled | mobile-token-validation}

  • disabledNot to carry out the mobile token verification.
    Note: When a Slow Header Attack is detected, FortiWeb automatically disables Real Browser Enforcement, regardless of this setting. Because slow header attacks involve incomplete or malformed requests, they are not compatible with browser validation.
  • mobile-token-validationRequires the client to use mobile token to verify whether the traffic is from mobile devices.
    To apply mobile token validation, you must enable mobile-app-identification in waf web-protection-profile inline-protection.

disable

bot-confirmation {enable | disable}

Enable to confirm if the client is indeed a bot. The system sends RBE (Real Browser Enforcement) JavaScript or CAPTCHA to the client to double check if it's a bot.

disable

validation-timeout <validation-timeout_int>

Enter the maximum amount of time (in seconds) that FortiWeb waits for results from the client.

Available only when the bot-recognition {disabled | real-browser-enforcement | captcha-enforcement | captcha-puzzle-enforcement | recaptcha-enforcement | recaptcha-v3-enforcement } is browser-enforcement, captcha-enforcement, or captcha-puzzle-enforcement.

20

crawler-detection {enable | disable}

Enable to detect tools that browse your web site for indexing purposes.

enable

crawler-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period}

Select which action FortiWeb will take when it detects a crawler:

  • alert—Accept the connection and generate an alert email and/or log message.
  • alert_deny—Block the request (or reset the connection) and generate an alert and/or log message.
  • deny_no_log—Block the request (or reset the connection).
  • block-period—Block subsequent requests from the client for a number of seconds. Also configure crawler-block-period <crawler-block-period_int>.
  • client-id-block-period—Block a malicious or suspicious client based on the FortiWeb generated client ID. This is useful when the source IP of a certain client keeps changing. This option takes effect only when you enable Client Management in the Server Policy. Also configure crawler-block-period <crawler-block-period_int>.

alert

crawler-severity {High | Medium | Low | Info}

When policy violations are recorded in the attack log, each log message contains a Severity Level (severity_level) field. Select which severity level FortiWeb will use when it logs a crawler:

  • Informative
  • Low
  • Medium
  • High

Medium

crawler-trigger <crawler-trigger-policy_name>

Select the trigger, if any, that FortiWeb will use when it logs and/or sends an alert email about a crawler. For details, see "Viewing log messages" on page 1.

No default.

crawler-occurrence-num <crawler-occurrence-num_int>

Define the frequency that FortiWeb detects 403 and 404 response codes returned by the web server.

100

crawler-within <crawler-within_int>

Specify the time period, in seconds, during which FortiWeb detects the 403 and 404 response codes.

10

crawler-block-period <crawler-block-period_int>

Enter the number of seconds that you want to block subsequent requests from a client after FortiWeb detects a crawler. The valid range is 1–3,600 seconds.

Available only if crawler-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period} is set to block-period or client-id-block-period.

600

scanner-detection {enable | disable}

Enable to detect tools that scan your web site for vulnerabilities.

disable

scanner-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period}

Select which action FortiWeb will take when it detects attack signatures:

  • alert—Accept the connection and generate an alert email and/or log message.
  • alert_deny—Block the request (or reset the connection) and generate an alert and/or log message.
  • deny_no_log—Block the request (or reset the connection).
  • block-period—Block subsequent requests from the client for a number of seconds. Also configure scanner-block-period <scanner-block-period_int>.
  • client-id-block-period—Block a malicious or suspicious client based on the FortiWeb generated client ID. This is useful when the source IP of a certain client keeps changing. This option takes effect only when you enable Client Management in the Server Policy. Also configure scanner-block-period <scanner-block-period_int>.

alert

scanner-severity {High | Medium | Low | Info}

When policy violations are recorded in the attack log, each log message contains a Severity Level (severity_level) field. Select which severity level FortiWeb will use when it logs attack signatures:

  • Informative
  • Low
  • Medium
  • High

Medium

scanner-trigger <scanner-trigger-policy_name>

Select the trigger, if any, that FortiWeb will use when it logs and/or sends an alert email about attack signatures. For details, see "Viewing log messages" on page 1.

No default.

scanner-occurrence-num <scanner-occurrence-num_int>

Define the frequency that FortiWeb detects attack signatures.

100

scanner-within <scanner-within_int>

Specify the time period, in seconds, during which FortiWeb monitors the attack signatures.

10

scanner-block-period <scanner-block-period_int>

Enter the number of seconds that you want to block subsequent requests from a client after FortiWeb detects attack signatures. The valid range is 1–3,600 seconds.

Available only if scanner-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period} is set to block-period or client-id-block-period.

600

slow-attack-detection {enable | disable}

Enable to detect Denial of Service tools that try to go undetected by generating a small stream of traffic.

disable

slow-attack-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period}

Select which action FortiWeb will take when it detects slow attack activities:

  • alert—Accept the connection and generate an alert email and/or log message.
  • alert_deny—Block the request (or reset the connection) and generate an alert and/or log message.
  • deny_no_log—Block the request (or reset the connection).
  • block-period—Block subsequent requests from the client for a number of seconds. Also configure slow-attack-block-period <slow-attack-block-period_int>.
  • client-id-block-period—Block a malicious or suspicious client based on the FortiWeb generated client ID. This is useful when the source IP of a certain client keeps changing. This option takes effect only when you enable Client Management in the Server Policy. Also configure slow-attack-block-period <slow-attack-block-period_int>.
    When a Slow Header Attack is detected, FortiWeb automatically falls back to Client IP for occurrence tracking. If the configured action is Client ID Block Period, it will be enforced as an IP-based Period Block instead.

alert

slow-attack-severity {High | Medium | Low | Info}

When policy violations are recorded in the attack log, each log message contains a Severity Level (severity_level) field. Select which severity level FortiWeb will use when it logs slow attack activities:

  • Informative
  • Low
  • Medium
  • High

Medium

slow-attack-trigger <slow-attack-trigger-policy_name>

Select the trigger, if any, that FortiWeb will use when it logs and/or sends an alert email about slow attack activities. For details, see "Viewing log messages" on page 1.

No default.

slow-attack-occurrence-num <slow-attack-occurrence-num_int>

Define the frequency that FortiWeb detects slow attack activities.

5

slow-attack-within <slow-attack-within_int>

Specify the time period, in seconds, during which FortiWeb detects slow attack activities.

100

slow-attack-HTTP-transaction-timeout <slow-attack-HTTP-transaction-timeout_int>

Specify a timeout value, in seconds, for the HTTP transaction.

60

slow-attack-packet-interval-timeout <slow-attack-packet-interval-timeout_int>

Specify the timeout value, in seconds, for interval between packets arriving from either the client or server (request or response packets).

10

slow-attack-block-period <slow-attack-block-period_int>

Enter the number of seconds that you want to block subsequent requests from a client after FortiWeb detects slow attack activities. The valid range is 1–3,600 seconds.

Available only if slow-attack-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period} is set to block-period or client-id-block-period.

600

content-scraping-detection {enable | disable}

Enable to detect bots that illegally copy contents from your web site.

disable

content-scraping-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period}

Select which action FortiWeb will take when it detects content scraping activities:

  • alert—Accept the connection and generate an alert email and/or log message.
  • alert_deny—Block the request (or reset the connection) and generate an alert and/or log message.
  • deny_no_log—Block the request (or reset the connection).
  • block-period—Block subsequent requests from the client for a number of seconds. Also configure content-scraping-block-period <content-scraping-block-period_int>.
  • client-id-block-period—Block a malicious or suspicious client based on the FortiWeb generated client ID. This is useful when the source IP of a certain client keeps changing. This option takes effect only when you enable Client Management in the Server Policy. Also configure content-scraping-block-period <content-scraping-block-period_int>.

alert

content-scraping-severity {High | Medium | Low | Info}

When policy violations are recorded in the attack log, each log message contains a Severity Level (severity_level) field. Select which severity level FortiWeb will use when it logs content scraping activities:

  • Informative
  • Low
  • Medium
  • High

Medium

content-scraping-trigger <content-scraping-trigger-policy_name>

Select the trigger, if any, that FortiWeb will use when it logs and/or sends an alert email about content scraping activities. For details, see "Viewing log messages" on page 1.

No default.

content-scraping-occurrence-num <content-scraping-occurrence-num_int>

Define the frequency that FortiWeb detects content scraping activities.

100

content-scraping-within <content-scraping-within_int>

Specify the time period, in seconds, during which FortiWeb detects content scraping activities.

30

content-scraping-block-period <content-scraping-block-period_int>

Enter the number of seconds that you want to block subsequent requests from a client after FortiWeb detects content scraping activities. The valid range is 1–3,600 seconds.

Available only if content-scraping-action {alert | deny_no_log | alert_deny | block-period | client-id-block-period} is set to block-period or client-id-block-period.

600

keep-occurrence-count {enable | disable}

Enable this option so that the threshold counter will not be reset throughout the Within (Seconds) timeframe. FortiWeb can continue denying or period-blocking the client as long as it has ever reached the threshold within the "Within (Seconds)" timeframe.

disable

Related Topics