Security Threats Log Rule Codes Explained

Each entry in the Security Threats Log has a rule code, such as FW_URI_TRAILING_GARB. The code tells you which check stopped the request and where in the request WP Ghost found the problem. This page explains how to read the codes and lists the ones you’ll see most.

Where to find the rule code

Go to WP Ghost > Logs > Security Threats. Open the menu at the end of a row and click Threat Details. Code is the rule code, Area is the part of the request that matched, and Matched pattern is the rule itself. The Threat Type column groups the codes into plain categories such as SQL Injection Attacks or Cross-Site Scripting (XSS).

How to read a rule code

The first part says which WP Ghost check found the request. For firewall codes, the second part says where it was found.

PartMeaning
FW_A firewall rule. The firewall level you picked decides which rules run.
FW_GHOST_A request check of the 2026 Ghost Firewall: what the visitor sends in forms, uploads and cookies.
THR_A threat the Security Threats Log recognized, such as a request for a PHP file that doesn’t exist.
DET_A theme or CMS detector.
BF_Brute force protection on the login.
AI_BOT_UAAn AI crawler, when Block AI Crawler Bots is on.
_QS_Found in the query string, the part of the URL after ?.
_URI_Found in the URL path.
_UA_Found in the user agent, the name a browser or bot sends.
_REF_Found in the referrer, the page the visitor says they came from.

Common rule codes

Rule codeWhat it means
FW_URI_TRAILING_GARBThe URL ends with a slash and a stray character, such as *, ", ', ., , or &. Scanners send URLs like this. A real visitor rarely does, unless they copied a broken link.
FW_QS_UNION_SELECT / FW_QS_SQL_KEYWORDS_1The query string (the part of the URL after ?) holds UNION ... SELECT, the start of an SQL injection.
FW_QS_SCRIPT_TAGThe query string holds a <script> tag, a cross-site scripting (XSS) attempt.
FW_QS_EVENT_HANDLERThe query string holds an HTML tag with an event such as onload or onerror, another XSS pattern.
FW_QS_JS_PROTOCOLThe query string holds javascript:, often encoded, to run script in the browser.
FW_QS_TRAVERSAL_HEAVYThe query string climbs folders with ../ to reach files outside the site.
FW_QS_ETC_PASSWDThe query string asks for /etc/passwd or /proc/self/environ, server files an attacker wants to read.
FW_QS_WP_CONFIGThe query string points to wp-config.php, the file with your database password.
FW_QS_BASE64_ENCODEThe query string calls base64_encode(), a way to hide code inside a request.
FW_QS_FUNC_CALLSThe query string calls PHP or SQL functions such as exec(), fopen() or benchmark().
FW_QS_HEADER_INJECTThe query string tries to add an HTTP header or a cookie to the response.
FW_QS_LONG_TOKEN / FW_UA_LONG_TOKENA single run of 2,000 or more letters and numbers in the query string or the user agent, typical of overflow and fuzzing tools.
FW_UA_BAD_BOTS_1 to FW_UA_BAD_BOTS_10The user agent (the name a browser or bot sends) is on the list of bad bots.
FW_UA_SCANNER_STACKThe user agent mixes odd characters with tool names such as wget, curl, python or nikto.
FW_UA_SHELL_TOKENSThe user agent holds code words such as eval, base64_decode or bin/bash.
FW_REF_SPAM_PHARMA_1 / _2The referrer (the page the visitor says they came from) holds spam words.
FW_URI_DOTFILESThe URL asks for a hidden server file such as .htaccess, .htpasswd or .DS_Store.
FW_URI_DB_CONFIGThe URL asks for a config file or a backup of one, such as wp-config.php.bak or db-config.txt.
FW_URI_SHELL_FILESThe URL asks for a known web shell file name, the kind of file attackers leave behind on hacked sites.
FW_URI_BAD_EXTS_1 to _3The URL ends with a file type a WordPress site doesn’t serve to visitors, such as .bak, .cfg or .aspx.
FW_URI_ADMINERThe URL asks for a database admin script such as adminer.php.
FW_URI_TIMTHUMBThe URL asks for timthumb.php or a similar thumbnail script with a known flaw.
FW_URI_UPLOADERSThe URL asks for an upload script such as admin-upload.php or uploadify.php.
FW_URI_WP_FAKE_FILESThe URL asks for a PHP file that looks like a WordPress file but isn’t one, such as wp-crons.php or wp-setups.php.
FW_URI_OLD_STAGINGThe URL is a bare folder such as /staging/ or /old-site/, where scanners look for forgotten copies of a site.
FW_URI_FILENAME_BUCKET_1 to _9 / FW_URI_MARKERS_1 to _5The URL holds a file name or a marker from known attack tools.
FW_GHOST_ROLE_ESCALATIONA visitor’s request tries to set a user role or capabilities, for example to make itself an administrator. 2026 Ghost Firewall.
FW_GHOST_UPLOAD_PHP_SHELLA visitor uploads a PHP file, or an image file with PHP code inside. 2026 Ghost Firewall.
FW_GHOST_OBJECT_INJECTIONA parameter or cookie holds a serialized PHP object, used to run code through a plugin flaw. 2026 Ghost Firewall.
FW_GHOST_SSRFA parameter holds a cloud metadata address or a URL scheme such as gopher://, used to make your server call places it shouldn’t. 2026 Ghost Firewall.
THR_URI_PHP_NONEXISTENTSomeone asked for a PHP file that doesn’t exist on your site, usually a scanner checking for a vulnerable plugin.
THR_URI_PROHIBITED_ENV / _GIT / _README / _LICENSESomeone asked for a file WP Ghost keeps private, such as .env, the .git folder, readme.html or license.txt.
THR_QS_SQLI_SLEEP_FUNC / THR_QS_SQLI_TAUTOLOGY_1EQ1SQL injection tests in the query string: a SLEEP() call, or 1=1.
DET_UA_HOSTThe user agent belongs to a theme or CMS detector, blocked by Block Theme Detectors Crawlers.
AI_BOT_UAThe user agent belongs to an AI crawler, blocked by Block AI Crawler Bots.
BF_LOGIN_EXCEEDEDToo many failed logins from one IP address: brute force protection locked it out.

What to do when a real visitor is blocked

Most entries are bots and scanners, and you don’t need to do anything. If a real visitor or one of your own tools was blocked, open the menu on that row:

  • Whitelist Path lets that URL through.
  • Whitelist Rule turns off only that rule code. The other rules keep working.
  • Blacklist IP blocks the address if the entry is an attack you want to stop for good.

You manage everything you whitelisted in WP Ghost > Firewall > Whitelist. For the full log, see the Security Threats Log guide, and for the firewall levels, the 2026 Ghost Firewall guide.

Frequently asked questions

Is a rule code an error on my site?

No. A rule code means WP Ghost stopped a request. Your site keeps working for everyone else.

Why don’t I see a code from this list?

The list covers the codes you’ll see most. WP Ghost has more than 150 firewall rules, and each one has its own code. The Threat Type column always tells you the category.

Related Articles