at path:
ROOT
/
wp-content
/
plugins
/
wordfence
/
lib
/
wfJWT.php
run:
R
W
Run
Diff
DIR
2026-09-09 19:13:04
R
W
Run
audit-log
DIR
2026-09-09 19:13:04
R
W
Run
dashboard
DIR
2026-09-09 19:13:04
R
W
Run
rest-api
DIR
2026-09-09 19:13:04
R
W
Run
.htaccess
354 By
2026-09-09 19:13:04
R
W
Run
Delete
Rename
Diff.php
5.63 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
IPTraf.php
1.17 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
WFLSPHP52Compatability.php
1.27 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
compat.php
425 By
2026-09-09 19:13:04
R
W
Run
Delete
Rename
diffResult.php
2.85 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
email_genericAlert.php
1.39 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
email_newIssues.php
8.82 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
email_unlockRequest.php
2.34 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
email_unsubscribeRequest.php
1.02 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
flags.php
6.62 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
geoip.mmdb
8.22 MB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
live_activity.php
580 By
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_dashboard.php
4.46 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_dashboard_options.php
1.69 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_firewall.php
1.94 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_firewall_blocking.php
317 By
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_firewall_blocking_options.php
3.07 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_firewall_waf.php
4.01 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_firewall_waf_options.php
2.02 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_install.php
2.05 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_options.php
9.15 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_scanner.php
3.6 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_scanner_credentials.php
2.86 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_scanner_options.php
3.33 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_support.php
10.87 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_tools.php
1.68 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_tools_auditlog.php
12.49 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_tools_diagnostic.php
40.95 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_tools_importExport.php
1.33 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_tools_livetraffic.php
408 By
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_tools_twoFactor.php
991 By
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_tools_whois.php
1.3 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
menu_wordfence_central.php
9.8 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
noc1.key
1.64 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
sodium_compat_fast.php
185 By
2026-09-09 19:13:04
R
W
Run
Delete
Rename
sysinfo.php
1.51 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
viewFullActivityLog.php
1.47 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wf503.php
9.72 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfAPI.php
10.1 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfActivityReport.php
20.55 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfAdminNoticeQueue.php
13.17 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfAlerts.php
8.19 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfAuditLog.php
47.13 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfBinaryList.php
1.02 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfBrowscap.php
3.9 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfBrowscapCache.php
256.83 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfBulkCountries.php
9.77 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfCache.php
6.02 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfCentralAPI.php
25.94 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfCommonPasswords.php
1.25 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfConfig.php
126.9 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfCrawl.php
7.13 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfCredentialsController.php
10.31 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfCrypt.php
4.05 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfCurlInterceptor.php
1.02 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfDB.php
11.49 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfDashboard.php
9.25 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfDateLocalization.php
352.13 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfDeactivationOption.php
2.13 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfDiagnostic.php
69.43 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfDirectoryIterator.php
1.89 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfFileUtils.php
2.72 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfHelperBin.php
1.97 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfHelperString.php
2.13 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfI18n.php
878 By
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfIPWhitelist.php
1.56 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfImportExportController.php
3.23 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfInaccessibleDirectoryException.php
303 By
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfInvalidPathException.php
266 By
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfIpLocation.php
1.8 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfIpLocator.php
2.7 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfIssues.php
29.14 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfJWT.php
5.33 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfJavascriptBridge.php
198.91 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfLicense.php
10.95 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfLockedOut.php
9.81 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfLog.php
58.47 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfMD5BloomFilter.php
5.2 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfModuleController.php
754 By
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfNotification.php
6.7 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfOnboardingController.php
8.54 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfPersistenceController.php
1.4 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfRESTAPI.php
377 By
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfScan.php
15.98 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfScanEngine.php
128.27 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfScanEntrypoint.php
1.04 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfScanFile.php
1.01 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfScanFileLink.php
403 By
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfScanFileListItem.php
408 By
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfScanFileProperties.php
1.07 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfScanMonitor.php
4.09 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfScanPath.php
1.77 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfSchema.php
11.93 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfStyle.php
1.21 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfSupportController.php
24.95 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfUnlockMsg.php
1.14 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfUpdateCheck.php
27.23 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfUtils.php
131.69 KB
2026-09-09 19:13:04
R
W
Run
Delete
Rename
wfVersionCheckController.php
15.59 KB
2026-09-09 19:13:05
R
W
Run
Delete
Rename
wfVersionSupport.php
535 By
2026-09-09 19:13:05
R
W
Run
Delete
Rename
wfView.php
2.22 KB
2026-09-09 19:13:05
R
W
Run
Delete
Rename
wfViewResult.php
1.47 KB
2026-09-09 19:13:05
R
W
Run
Delete
Rename
wfWebsite.php
1.75 KB
2026-09-09 19:13:05
R
W
Run
Delete
Rename
wordfenceClass.php
400.53 KB
2026-09-09 19:13:05
R
W
Run
Delete
Rename
wordfenceConstants.php
3.35 KB
2026-09-09 19:13:05
R
W
Run
Delete
Rename
wordfenceHash.php
42.6 KB
2026-09-09 19:13:05
R
W
Run
Delete
Rename
wordfenceScanner.php
28.19 KB
2026-09-09 19:13:05
R
W
Run
Delete
Rename
wordfenceURLHoover.php
18.35 KB
2026-09-09 19:13:05
R
W
Run
Delete
Rename
error_log
up
📄
wfJWT.php
Save
<?php class wfJWT { private $claims; const JWT_TTL = 600; const ISSUER = 600; public static function extractTokenContents($token) { if (!is_string($token)) { throw new InvalidArgumentException('Token is not a string. ' . gettype($token) . ' given.'); } // Verify the token matches the JWT format. if (!preg_match('/^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?$/', $token)) { throw new wfJWTException('Invalid token format.'); } list($header, $body, $signature) = explode('.', $token); // Test that the token is valid and not expired. $decodedHeader = base64_decode($header); if (!(is_string($decodedHeader) && $decodedHeader)) { throw new wfJWTException('Token header is invalid.'); } $header = json_decode($decodedHeader, true); if (!is_array($header)) { throw new wfJWTException('Token header is invalid.'); } $decodedBody = base64_decode($body); if (!(is_string($decodedBody) && $decodedBody)) { throw new wfJWTException('Token body is invalid.'); } $body = json_decode($decodedBody, true); if (!is_array($body)) { throw new wfJWTException('Token body is invalid.'); } return array( 'header' => $header, 'body' => $body, 'signature' => $signature, ); } /** * @param mixed $subject */ public function __construct($subject = null) { $this->claims = $this->getClaimDefaults(); $this->claims['sub'] = $subject; } /** * @return string */ public function encode() { $header = $this->encodeString($this->buildHeader()); $body = $this->encodeString($this->buildBody()); return sprintf('%s.%s.%s', $header, $body, $this->encodeString($this->sign(sprintf('%s.%s', $header, $body)))); } /** * @param string $token * @return array * @throws wfJWTException|InvalidArgumentException */ public function decode($token) { if (!is_string($token)) { throw new InvalidArgumentException('Token is not a string. ' . gettype($token) . ' given.'); } // Verify the token matches the JWT format. if (!preg_match('/^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?$/', $token)) { throw new wfJWTException('Invalid token format.'); } list($header, $body, $signature) = explode('.', $token); // Verify signature matches the supplied payload. if (!$this->verifySignature($this->decodeString($signature), sprintf('%s.%s', $header, $body))) { throw new wfJWTException('Invalid signature.'); } // Test that the token is valid and not expired. $decodedHeader = base64_decode($header); if (!(is_string($decodedHeader) && $decodedHeader)) { throw new wfJWTException('Token header is invalid.'); } $header = json_decode($decodedHeader, true); if (!( is_array($header) && array_key_exists('alg', $header) && $header['alg'] === 'HS256' && $header['typ'] === 'JWT' )) { throw new wfJWTException('Token header is invalid.'); } $decodedBody = base64_decode($body); if (!(is_string($decodedBody) && $decodedBody)) { throw new wfJWTException('Token body is invalid.'); } $body = json_decode($decodedBody, true); if (!( is_array($body) && // Check the token not before now timestamp. array_key_exists('nbf', $body) && is_numeric($body['nbf']) && $body['nbf'] <= time() && // Check the token is not expired. array_key_exists('exp', $body) && is_numeric($body['exp']) && $body['exp'] >= time() && // Check the issuer and audience is ours. $body['iss'] === 'Wordfence ' . WORDFENCE_VERSION && $body['aud'] === 'Wordfence Central' )) { throw new wfJWTException('Token is invalid or expired.'); } return array( 'header' => $header, 'body' => $body, ); } /** * @param string $string * @return string */ public function sign($string) { $salt = wp_salt('auth'); return hash_hmac('sha256', $string, $salt, true); } /** * @param string $signature * @param string $message * @return bool */ public function verifySignature($signature, $message) { return hash_equals($this->sign($message), $signature); } /** * @return string */ public function __toString() { return $this->encode(); } /** * @param string $data * @return string */ public function encodeString($data) { return rtrim(strtr(base64_encode($data), '+/', '-_'), '='); } /** * @param string $data * @return bool|string */ public function decodeString($data) { return base64_decode(strtr($data, '-_', '+/')); } /** * @return mixed|string */ protected function buildHeader() { return '{"alg":"HS256","typ":"JWT"}'; } /** * @return mixed|string */ protected function buildBody() { return json_encode($this->getClaims()); } /** * @return array */ protected function getClaimDefaults() { $now = time(); return array( 'iss' => 'Wordfence ' . WORDFENCE_VERSION, 'aud' => 'Wordfence Central', 'nbf' => $now, 'iat' => $now, 'exp' => $now + self::JWT_TTL, ); } /** * @param array $claims */ public function addClaims($claims) { if (!is_array($claims)) { throw new InvalidArgumentException(__METHOD__ . ' expects argument 1 to be array.'); } $this->setClaims(array_merge($this->getClaims(), $claims)); } /** * @return array */ public function getClaims() { return $this->claims; } /** * @param array $claims */ public function setClaims($claims) { $this->claims = $claims; } } class wfJWTException extends Exception { }