For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
HUMAN DashboardHUMAN WebsiteRequest a Demo
Product GuidesEnforcer GuidesMobile SDKAPI ReferenceCustomer support
Product GuidesEnforcer GuidesMobile SDKAPI ReferenceCustomer support
  • General
    • About Enforcers
    • Support first-party HUMAN calls
    • Troubleshoot Enforcer configurations
  • Enforcer frameworks
    • Akamai ESI
    • Apache - C Module
    • ASP.NET
    • Callout Enforcer
    • Envoy Proxy
    • F5 BIGIP
      • What's New
      • Installation
      • First Party Integration
      • Configuration Reference
      • Configurational Classes
      • Advanced Customization
      • Troubleshooting
    • Fastly JavaScript Compute@Edge
    • Google Cloud Platform (GCP) Callout Enforcer
    • Kong Plugin
    • NGINX - C Module
    • NGINX - LUA Module
    • PHP
    • Python
    • Ruby
    • Salesforce Commerce Cloud Cartridge
LogoLogo
Login
Login
HUMAN DashboardHUMAN WebsiteRequest a Demo
On this page
  • Whitelist Routes
  • Whitelisted Query Parameters
  • Specific Routes
  • Sensitive Routes
  • Monitor Routes
  • Login Credentials Extraction
  • Example: JSON Body Login
  • Example: Form POST Login
  • Supported Content Types for Body Extraction
  • Extraction from Headers
  • Extraction from Query String
Enforcer frameworksF5 BIGIP

Configurational Classes

Was this page helpful?
Previous

Advanced Customization

Next
Built with
PII (Personally Identifiable Information) Anonymization

Personally Identifiable Information (PII) is information that can be used on its own or with other information to identify a single person, or to identify an individual in context.

It is important for us to keep personal private information out of our servers. Therefore, by default, we do not send the request body and cookies to HUMAN backend servers, the entire communication is based on headers data.

PII is not a recommended setting. If PII is essential for your organization, contact HUMAN Support.

When PII is enabled, HUMAN does not store a client’s full IP information (Client IP, HTTP Headers). In IPv4 this is done by zeroing 4th IP octet (for example, the IP 1.2.3.4 will be stored as 1.2.3.0). In IPv6 this is done by zeroing the last four (4) octets (for example, the IP 1:2:3:4:1:2:3:4 will be stored as 1:2:3:4:1:2:3:0). Removing the IP’s last octet can result small reduction of detection capability, usually for the models and signatures that are based on IPs.

The HUMAN BigIP module allows you to set a number of configurational classes (data groups) to control which routes are processed in different ways.

Whitelist Routes

Routes added to this class will bypass HUMAN enforcement entirely.

  1. On Local Traffic > iRules > Data Group List create a new Data Group.
  2. Set the Name to px_<APP_ID>_whitelisted_routes. Make sure to replace <APP_ID> with your HUMAN app id.
  3. Set Type to String.
  4. For each route you wish to allow, set the String property of String Record to the prefix of the route and click Add.
  5. Click Finished.
  6. On the iRule, make sure the value of whitelisted_routes_class directive is the same as the name you provided in step 2.

Whitelisted Query Parameters

Query parameters added to this class will be excluded from the URL sent to HUMAN for risk evaluation. This is useful for removing sensitive or dynamic parameters from the evaluation.

  1. On Local Traffic > iRules > Data Group List create a new Data Group.
  2. Set the Name to px_<APP_ID>_whitelisted_query_params. Make sure to replace <APP_ID> with your HUMAN app id.
  3. Set Type to String.
  4. For each URI query parameter you wish to whitelist:
    • Set the String property to the query parameter key name
    • Set the Value property to a regex pattern matching the values to whitelist
    • Click Add
  5. Click Finished.

The Value field uses regex matching. For example, to whitelist all values for a parameter, use .* as the value.

Example: To whitelist the session_id parameter with any value:

  • String: session_id
  • Value: .*

Specific Routes

Routes added to this class will be the only routes that HUMAN enforces. All other routes will bypass enforcement.

  1. On Local Traffic > iRules > Data Group List create a new Data Group.
  2. Set the Name to px_<APP_ID>_specific_routes. Make sure to replace <APP_ID> with your HUMAN app id.
  3. Set Type to String.
  4. For each route you wish to enforce, set the String property of String Record to the prefix of the route and click Add.
  5. Click Finished.
  6. On the iRule, make sure the value of specific_routes_class directive is the same as the name you provided in step 2.

Sensitive Routes

Routes added to this class will trigger a server-to-server risk API call regardless of the cookie score. This provides higher security for critical endpoints.

  1. On Local Traffic > iRules > Data Group List create a new Data Group.
  2. Set the Name to px_<APP_ID>_sensitive_routes. Make sure to replace <APP_ID> with your HUMAN app id.
  3. Set Type to String.
  4. For each sensitive route, set the String property of String Record to the prefix of the route and click Add.
  5. Click Finished.
  6. On the iRule, make sure the value of sensitive_routes_class directive is the same as the name you provided in step 2.

Monitor Routes

Routes added to this class will be processed in monitor mode regardless of the global module_mode setting. This allows you to enable blocking mode globally while keeping specific routes in monitor mode, or vice versa.

The class supports domain/path based configuration for more granular control.

  1. On Local Traffic > iRules > Data Group List create a new Data Group.
  2. Set the Name to px_<APP_ID>_monitor_routes. Make sure to replace <APP_ID> with your HUMAN app id.
  3. Set Type to String.
  4. For each route you wish to set to monitor mode:
    • Set the String property to the domain and path (e.g., example.com/api)
    • Click Add
  5. Click Finished.

Monitor routes can be specified with just a path (e.g., /api/v1) or with a domain prefix (e.g., api.example.com/v1).

Login Credentials Extraction

This class defines the endpoint where login credentials should be extracted. The credentials are hashed and sent to HUMAN for breach detection.

Before creating this class, ensure Credential Intelligence is enabled in the pxconfig data group. See Credential Intelligence for details.

  1. On Local Traffic > iRules > Data Group List create a new Data Group.
  2. Set the Name to match the value configured in ci_login_credentials_extraction_class (e.g., px_login_credentials).
  3. Set Type to String.
  4. Add the following records with their corresponding values:
String (Key)DescriptionExample Value
pathRegex pattern for the login endpoint path (case-insensitive matching)/login
methodHTTP method for login requests (case-insensitive matching)POST
sent_throughWhere credentials are located: body, header, or query-stringbody
user_fieldField name containing the usernameusername
pass_fieldField name containing the passwordpassword
  1. Click Finished.

Both path and method matching are case-insensitive. The path field supports regular expression patterns.

Example: JSON Body Login

For a login endpoint at /api/auth/login that accepts POST requests with JSON body:

1{
2 "email": "user@example.com",
3 "password": "secretpassword"
4}

Configure the class with these records:

StringValue
path/api/auth/login
methodPOST
sent_throughbody
user_fieldemail
pass_fieldpassword

Example: Form POST Login

For a login form that submits to /login with form-urlencoded data:

StringValue
path/login
methodPOST
sent_throughbody
user_fieldusername
pass_fieldpassword

Supported Content Types for Body Extraction

When sent_through is set to body, the enforcer supports:

  • application/json - JSON request bodies
  • application/x-www-form-urlencoded - Form-encoded request bodies

The enforcer automatically detects the content type based on the Content-Type or Accept request header.

Extraction from Headers

When sent_through is set to header, the user_field and pass_field values specify the header names:

StringValue
path/api/login
methodPOST
sent_throughheader
user_fieldX-Username
pass_fieldX-Password

Extraction from Query String

When sent_through is set to query-string, the user_field and pass_field values specify the query parameter names:

StringValue
path/login
methodGET
sent_throughquery-string
user_fielduser
pass_fieldpass

This would extract credentials from a URL like /login?user=john&pass=secret.