diff --git a/.changelogs/security-wp-safe-redirect.yml b/.changelogs/security-wp-safe-redirect.yml new file mode 100644 index 0000000000..563e6af7ea --- /dev/null +++ b/.changelogs/security-wp-safe-redirect.yml @@ -0,0 +1,3 @@ +significance: patch +type: security +entry: "Replaced wp_redirect() with wp_safe_redirect() in the template loader and lesson progression controller to mitigate open redirect risks." diff --git a/includes/class.llms.template.loader.php b/includes/class.llms.template.loader.php index 66cbd1f099..8cbb05c5e3 100644 --- a/includes/class.llms.template.loader.php +++ b/includes/class.llms.template.loader.php @@ -101,7 +101,7 @@ private function handle_restriction( $msg = '', $redirect = '', $msg_type = 'not if ( $redirect ) { nocache_headers(); - wp_redirect( $redirect ); + wp_safe_redirect( $redirect ); exit; } } diff --git a/includes/controllers/class.llms.controller.lesson.progression.php b/includes/controllers/class.llms.controller.lesson.progression.php index 7786b08ee8..a22bf3bd5d 100644 --- a/includes/controllers/class.llms.controller.lesson.progression.php +++ b/includes/controllers/class.llms.controller.lesson.progression.php @@ -152,7 +152,7 @@ public function handle_complete_form() { $next_lesson_id = $lesson->get_next_lesson(); if ( $next_lesson_id ) { - wp_redirect( apply_filters( 'llms_lesson_complete_redirect', get_permalink( $next_lesson_id ) ) ); + wp_safe_redirect( apply_filters( 'llms_lesson_complete_redirect', get_permalink( $next_lesson_id ) ) ); exit; }