@@ -912,8 +912,21 @@ public static function show_two_factor_login( $user ) {
912912 wp_die ( esc_html__ ( 'Failed to create a login nonce. ' , 'two-factor ' ) );
913913 }
914914
915- $ redirect_to = isset ( $ _REQUEST ['redirect_to ' ] ) ? esc_url_raw ( wp_unslash ( $ _REQUEST ['redirect_to ' ] ) ) : admin_url (); // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Value only used for redirect; auth protected by 2FA login nonce later.
915+ if ( isset ( $ _REQUEST ['redirect_to ' ] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Value only used for redirect; auth protected by 2FA login nonce later.
916+ $ raw_redirect_to = wp_unslash ( $ _REQUEST ['redirect_to ' ] );
916917
918+ if ( is_scalar ( $ raw_redirect_to ) ) {
919+ $ redirect_to = esc_url_raw ( (string ) $ raw_redirect_to );
920+
921+ if ( '' === $ redirect_to ) {
922+ $ redirect_to = admin_url ();
923+ }
924+ } else {
925+ $ redirect_to = admin_url ();
926+ }
927+ } else {
928+ $ redirect_to = admin_url ();
929+ }
917930 self ::login_html ( $ user , $ login_nonce ['key ' ], $ redirect_to );
918931 }
919932
@@ -1499,10 +1512,10 @@ public static function rest_api_can_edit_user_and_update_two_factor_options( $us
14991512 * @since 0.2.0
15001513 */
15011514 public static function login_form_validate_2fa () {
1502- $ wp_auth_id = ! empty ( $ _REQUEST ['wp-auth-id ' ] ) ? absint ( $ _REQUEST ['wp-auth-id ' ] ) : 0 ; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verified in _login_form_validate_2fa() via verify_login_nonce() before any use .
1515+ $ wp_auth_id = ! empty ( $ _REQUEST ['wp-auth-id ' ] ) ? absint ( $ _REQUEST ['wp-auth-id ' ] ) : 0 ; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verified in _login_form_validate_2fa() via verify_login_nonce() before any state-changing actions .
15031516 $ nonce = ( isset ( $ _REQUEST ['wp-auth-nonce ' ] ) && is_scalar ( $ _REQUEST ['wp-auth-nonce ' ] ) ) ? sanitize_text_field ( wp_unslash ( (string ) $ _REQUEST ['wp-auth-nonce ' ] ) ) : '' ; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verified in _login_form_validate_2fa() before any use.
15041517 $ provider = ! empty ( $ _REQUEST ['provider ' ] ) ? sanitize_text_field ( wp_unslash ( $ _REQUEST ['provider ' ] ) ) : '' ; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verified in _login_form_validate_2fa() before any use.
1505- $ redirect_to = ! empty ( $ _REQUEST ['redirect_to ' ] ) ? esc_url_raw ( wp_unslash ( $ _REQUEST ['redirect_to ' ] ) ) : '' ; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verified in _login_form_validate_2fa() before any use.
1518+ $ redirect_to = ( isset ( $ _REQUEST ['redirect_to ' ] ) && is_scalar ( $ _REQUEST [ ' redirect_to ' ] ) ) ? esc_url_raw ( wp_unslash ( ( string ) $ _REQUEST ['redirect_to ' ] ) ) : '' ; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verified in _login_form_validate_2fa() before any use.
15061519 $ is_post_request = isset ( $ _SERVER ['REQUEST_METHOD ' ] ) && 'POST ' === strtoupper ( $ _SERVER ['REQUEST_METHOD ' ] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- REQUEST_METHOD is not user input.
15071520 $ user = get_user_by ( 'id ' , $ wp_auth_id );
15081521
@@ -1641,7 +1654,7 @@ public static function _login_form_validate_2fa( $user, $nonce = '', $provider =
16411654 public static function login_form_revalidate_2fa () {
16421655 $ nonce = ( isset ( $ _REQUEST ['wp-auth-nonce ' ] ) && is_scalar ( $ _REQUEST ['wp-auth-nonce ' ] ) ) ? sanitize_text_field ( wp_unslash ( (string ) $ _REQUEST ['wp-auth-nonce ' ] ) ) : '' ; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verified in _login_form_revalidate_2fa() for POST before processing.
16431656 $ provider = ! empty ( $ _REQUEST ['provider ' ] ) ? sanitize_text_field ( wp_unslash ( $ _REQUEST ['provider ' ] ) ) : false ; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verified in _login_form_revalidate_2fa() for POST before processing.
1644- $ redirect_to = ! empty ( $ _REQUEST ['redirect_to ' ] ) ? esc_url_raw ( wp_unslash ( $ _REQUEST ['redirect_to ' ] ) ) : admin_url (); // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verified in _login_form_revalidate_2fa() for POST before processing.
1657+ $ redirect_to = ( isset ( $ _REQUEST ['redirect_to ' ] ) && is_scalar ( $ _REQUEST [ ' redirect_to ' ] ) ) ? esc_url_raw ( wp_unslash ( ( string ) $ _REQUEST ['redirect_to ' ] ) ) : admin_url (); // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verified in _login_form_revalidate_2fa() for POST before processing.
16451658 $ is_post_request = isset ( $ _SERVER ['REQUEST_METHOD ' ] ) && 'POST ' === strtoupper ( $ _SERVER ['REQUEST_METHOD ' ] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- REQUEST_METHOD is not user input.
16461659
16471660 self ::_login_form_revalidate_2fa ( $ nonce , $ provider , $ redirect_to , $ is_post_request );
0 commit comments