To configure the enforcer
Required values:
px_app_idThe application ID. Required to initialize the Enforcer.
px_auth_tokenThe token used for authorization with the Human/PerimeterX backend. Required to initialize the Enforcer.
px_cookie_secretThe secret used to encrypt and decrypt the risk cookie. Required to initialize the Enforcer.
onPassAn handler that will be processed when HUMAN verifies the request. The implementation can be the same handler used before installing the enforcer.
onResponseThis function allows modification of the response when Human Security decides to return custom response
for example in case of block, static resources, etc…
px_module_enabledThis boolean serves as an on/off switch for the entire module, providing a way to enable and disable all Enforcer capabilities quickly and easily.
Default: true
px_module_modeThis feature controls the behavior of the enforcer by changing how it executes certain parts of the workflow. Most notably,
different modes allow for analysis and fine-tuning of the enforcer behavior without serving block pages that affect end users.
Possible values:
monitor - the enforcer will perform all functions without returning block responsesactive_blocking - the enforcer will return block responses when neededDefault: monitor
px_logger_severityThe verbosity of the logs generated by the enforcer. The enforcer will always use the console.log() function regardless
of the configured logger severity.
Possible values:
none - No logs will be generatederror - Sparse logs will be generated only when errors occurdebug - Detailed logs will always be generated (not advisable for production environments)Default: error
px_s2s_timeoutThe maximum time in milliseconds to wait for the risk API request. If this timeout is reached, the original request will
be allowed to pass (fail open).
Default: 1000
px_ip_headersBy default, the IP is taken from request.ip
However, if this is inaccurate, the enforcer can extract the IP from the headers configured here. The headers are
traversed in the order they are listed. The first header value that exists will be used as the client IP.
Default: []
px_advanced_blocking_response_enabledIn specific cases (e.g., XHR post requests), a full captcha page render might not be an option. In such cases the advanced
blocking response returns a JSON object containing all the information needed to render a customized captcha challenge
implementation - be it a popup modal, a section on the page, etc. This allows for flexibility and customizability in terms
of how the captcha pages are displayed.
Default: true
px_first_party_enabledTo prevent suspicious or unwanted behavior on the client side, some browsers or extensions (e.g., adblockers)
may deny the frontend JavaScript code from making requests to other domains. This prevents the PerimeterX sensor from making
requests to the PerimeterX backends, which greatly limits PerimeterX’s detection capabilities. To avoid this problem, first_party
enables the enforcer to be used as a proxy for PerimeterX servers, and to serve content to the browser from a first party
endpoint (i.e., an endpoint on the customer’s domain).
Default: true
px_bypass_monitor_headerWhen enabling the enforcer for the first time, it is recommended to do so in monitor mode to collect data before actually
starting to block user requests. Prior to switching the module mode to active_blocking entirely, it’s also crucial to verify
that the full blocking flow works as expected. This feature activates the full blocking flow even while in monitor mode if
a particular header is present on the request.
Default: Empty
px_enforced_routesCustomers may want certain, but not all, endpoints to be enforced by PerimeterX, even when the Enforcer is in Monitor Mode.
These routes will go through the full enforcer workflow, including blocking requests when necessary. That is, even when
the enforcer is in Monitor Mode, these defined routes will behave as if in Blocking Mode.
Default: []
px_monitored_routesEnables certain endpoints to be monitored rather than enforced by PerimeterX, even when the enforcer is in active blocking mode.
Default: []
px_sensitive_headersThe PerimeterX detector requires information about the HTTP request as part of its bot detections. Certain headers may contain
information that should not be forwarded to other servers, including the PerimeterX backend. Configuring these header names as
sensitive headers will remove these headers from requests sent to other backends by PerimeterX.
Default: [‘cookie’, ‘cookies’]
px_sensitive_routesCertain endpoints may require more stringent protection from bot attacks (e.g., endpoints that execute payments or handle
personal information). In these cases, routes can be configured as sensitive routes, meaning risk API calls will be made
even if the request contains a valid, unexpired cookie.
Default: []
px_filter_by_extensionPerimeterX does not enforce static assets such as images and documents. To prevent unnecessary API calls to PerimeterX
servers and needless computation, the enforcer filters all requests with a valid static file extension. Filtering by extension
only applies to HTTP requests with methods GET and HEAD.
Default: [‘.css’,‘.bmp’,‘.tif’,‘.ttf’,‘.docx’,‘.woff2’,‘.js’,‘.pict’,‘.tiff’,‘.eot’,‘.xlsx’,‘.jpg’,‘.csv’,‘.eps’,‘.woff’,‘.xls’,‘.jpeg’,‘.doc’,‘.ejs’,‘.otf’,‘.pptx’,‘.gif’,‘.pdf’,‘.swf’,‘.svg’,‘.ps’,‘.ico’,‘.pls’,‘.midi’,‘.svgz’,‘.class’,‘.png’,‘.ppt’,‘.mid’,‘.webp’,‘.jar’,‘.json’,‘.xml’]
px_filter_by_http_methodPerimeterX does not enforce static assets such as images and documents. To prevent unnecessary API calls to PerimeterX
servers and needless computation, the enforcer filters all requests with a valid static file extension.
Default: []
px_filter_by_ipFilters out requests according to their IP address, avoiding unnecessary traffic in the enforcer verification flow and reducing operation costs.
Default: []
px_filter_by_routeRoutes (endpoints) specified here will not be blocked, regardless of the score they receive. A client request to an allowed
route will not generate any risk or async activities.
Default: []
px_filter_by_user_agentFilters out requests according to their user agent value, avoiding unnecessary traffic in the enforcer verification flow and reducing operation costs.
Default: []
px_css_refProvides a way to include an additional custom .css file to add to the block page.
Default: Empty
px_js_refProvides a way to include a custom JS script to add to the block page. This script will run after the default JS scripts.
Default: Empty
px_custom_logoAdds a custom logo to the block page that will be shown to users. This aligns the block page with the customer’s brand.
Default: Empty
px_custom_cookie_headerThe Enforcer attempts to extract the PerimeterX cookies from the ‘Cookie’ header. If the PerimeterX cookies are transferred
on a header other than ‘Cookies’, the header name should be configured here.
Default: “x-px-cookies”
px_user_agent_max_lengthThe maximum length of the User-Agent header. If the user agent header value exceeds this length, it will be truncated
to this length prior to processing.
Default: 8528
px_additional_activity_handlerThe additional activity handler is a custom function passed to the enforcer. The enforcer runs this callback after
sending page_requested or block activity to the collector, and before forwarding the request to the next step in the
pipeline. A common use case of the additional activity handler is to set the score as a variable or header. Then the
application can read the score and do what is defined within the application’s logic.
void | Promise<void>Default: null
px_enrich_custom_parametersThis custom function enriches activities sent from the enforcer to PerimeterX with additional custom data. This data can include
user information, session IDs, or other data that PerimeterX should have access to. These custom parameters are defined
by a configurable function that must return an object that contains these custom parameters. There is a limit of 10 custom parameters.
CustomParameters | Promise<CustomParameters>Default: null