Support » Plugin: WP Super Cache » BUG: dynamic cache tags are not replaced because of wp_cache_phase2 conditions

  • Resolved promaty

    (@promaty)


    So what I’ve noticed is that the conditions in wp_cache_phase2() function are fired before the ‘wpsc_cachedata’ filter, which can be used to replace all the dynamic tags with real content. So if a current url doesn’t pass the filter, it gets stuck in this function and returns a page that is full of dynamic cache tags instead of the real content.

    For example adding a “?preview” query to any page shows all of the dynamic tags. This is a serious security issue as all of the users can find out about my tags and start inserting them into their comments, etc..

    Is there a way to replace all my tags before they become stuck in wp_cache_phase2?

    Thanks.

    https://wordpress.org/plugins/wp-super-cache/

Viewing 4 replies - 1 through 4 (of 4 total)
  • Plugin Author Donncha O Caoimh

    (@donncha)

    Can you try the development version for me? I just checked in a change to the output buffer that will ensure the wpsc_cachedata filter is hit every time, regardless of when the buffer is returned.

    It may take up to 20 minutes to update that version after this post is made. Open wp-cache-phase2.php and look for wp_cache_maybe_dynamic. If it’s there you have the updated version.

    http://ocaoimh.ie/y/2o

    Nope, still the same with your development version.

    For my specific case (?preview query added to the post) I have to comment out lines 69-72 in wp-cache-phase2.php and in addition lines 338-339 in wp-cache-phase1.php, wp_cache_postload() function, which is probably firing for single posts. (there is also isset( $_GET[ ‘preview’ ] ) condition in wp_supercache_cache_for_admins() function, but I’m not sure where it is relevant)

    It would be nice to have ‘wpsc_cachedata’ filter somewhere before all of these conditional functions as there are many additional conditions which could be forced to see my dynamic tags such as $_SERVER[“REQUEST_METHOD”] == ‘POST’ in wp-cache-phase2.

    P.S. Yes, I saw your wp_cache_maybe_dynamic() function on line 354.

    Plugin Author Donncha O Caoimh

    (@donncha)

    Thanks for the detailed reply! I modified the phase 1 and 2 files and moved the “do not cache” conditions so they’ll execute after the current page has been saved in $buffer. The plugin then feeds the buffer into the wp_cache_maybe_dynamic function.

    In my testing that fixed the problem with ?preview. Try the development version again and hopefully it’ll fix things for you too.

    Works perfect, thanks!

Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘BUG: dynamic cache tags are not replaced because of wp_cache_phase2 conditions’ is closed to new replies.