You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+49Lines changed: 49 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -54,6 +54,55 @@ The plugin can be downloaded from the GitHub repository and installed manually v
54
54
55
55
## **Changelog**
56
56
57
+
#### **Version 6.2.0 (Mar 18, 2026)**
58
+
59
+
**Security — Critical**
60
+
* Fixed CSRF vulnerability on all AJAX cache-flush handlers — nonces are now generated and verified with check_ajax_referer() on every request
61
+
* Added current_user_can('manage_options') authorization to legacy pressable_cache_purge_callback() which previously allowed any logged-in user to flush object cache
62
+
* Added capability check to Edge Cache enable/disable handlers — previously any authenticated user with a valid nonce could toggle Edge Cache
63
+
* Fixed targeted Batcache invalidation bug — wp_cache_set() was passing the cache group as the value argument instead of the group argument, causing single-page flushes to silently fail on distributed cache deployments
64
+
65
+
**Security — High**
66
+
* Hardened admin notice helpers with wp_kses_post() for message content and esc_attr() for CSS class values to prevent stored XSS
67
+
* Replaced raw HTML echo in pcm_branded_notice() with wp_kses_post() filtering
68
+
* Escaped all dynamic HTML attributes (name, id, for, value) in settings callback markup
69
+
* Fixed malformed HTML: broken hidden input tag, duplicate name attributes on radio buttons, missing closing quotes on for/class attributes
70
+
* Replaced role-name authorization checks (current_user_can('administrator'), current_user_can('editor')) with proper capability checks (manage_options, edit_posts, manage_woocommerce) across all handlers
71
+
72
+
**PHP 8.1 Compatibility**
73
+
* Removed deprecated FILTER_SANITIZE_NUMBER_INT — replaced with simple boolean normalization for all 7 checkbox validations
74
+
* Replaced all date() calls with gmdate() and removed date_default_timezone_set()/date_default_timezone_get() timezone mutation pattern
75
+
* Standardized timestamp format to 'j M Y, g:ia UTC' across all flush actions
76
+
* Added is_array() and isset() guards before array access on option values to prevent PHP 8.1 warnings
77
+
* Updated plugin header from Requires PHP: 7.4 to Requires PHP: 8.1
78
+
79
+
**Security — Medium**
80
+
* Added nonce verification to Edge Cache status and Defensive Mode status AJAX endpoints
81
+
* Converted all state-changing AJAX requests from GET to POST (toolbar flush, column flush)
82
+
* Replaced die(json_encode()) with wp_send_json_success()/wp_send_json_error() for consistent response handling
83
+
* Added ABSPATH direct-access guards to flush-cache-on-comment-delete.php, remove-pressable-branding.php, wp-write-to-file-lib.php, and pcm-batcache-manager.php
84
+
* Removed @ error suppression operators from file operations in flush-batcache-for-woo-individual-page.php and wp-write-to-file-lib.php
85
+
86
+
**Performance**
87
+
* Replaced time() asset versioning with filemtime() for all CSS/JS enqueues — assets now cache properly in browsers
88
+
* Removed third-party Google Fonts dependency — settings page now uses system font stack
89
+
* Removed blocking sleep(2) call from Edge Cache purge flow
90
+
91
+
**Maintenance**
92
+
* Fixed remove-old-mu-plugins.php migration to run once (keyed on pcm_migration_version option) instead of on every admin page load
93
+
* Replaced insecure uniqid(mt_rand()) temporary filename generation with wp_unique_filename()
0 commit comments