diff --git a/wp-admin/options.php b/wp-admin/options.php index 5be7da9cb1..f21fb228a8 100644 --- a/wp-admin/options.php +++ b/wp-admin/options.php @@ -86,6 +86,7 @@ case 'update': $referred = str_replace('?updated=true' , '', $_SERVER['HTTP_REFERER']); $goback = str_replace('?updated=true', '', $_SERVER['HTTP_REFERER']) . '?updated=true'; + $goback = preg_replace('|[^a-z?=&/~.:_-]|i', '', $goback); header('Location: ' . $goback); break; diff --git a/wp-admin/post.php b/wp-admin/post.php index 90e5372097..6992d393f0 100644 --- a/wp-admin/post.php +++ b/wp-admin/post.php @@ -458,6 +458,7 @@ case 'delete': $sendback = $_SERVER['HTTP_REFERER']; if (strstr($sendback, 'post.php')) $sendback = get_settings('siteurl') .'/wp-admin/post.php'; + $sendback = preg_replace('|[^a-z?=&/~.:_-]|i', '', $sendback); header ('Location: ' . $sendback); do_action('delete_post', $post_id); break; diff --git a/wp-comments-post.php b/wp-comments-post.php index 5492bc6e24..c91e8dae0c 100644 --- a/wp-comments-post.php +++ b/wp-comments-post.php @@ -98,6 +98,8 @@ header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); header('Cache-Control: no-cache, must-revalidate'); header('Pragma: no-cache'); $location = (empty($_POST['redirect_to'])) ? $_SERVER["HTTP_REFERER"] : $_POST['redirect_to']; +$location = preg_replace('|[^a-z?=&/~.:_-]|i', '', $location); + if ($is_IIS) { header("Refresh: 0;url=$location"); } else { diff --git a/wp-login.php b/wp-login.php index a0aeaf0625..9e0115cf8b 100644 --- a/wp-login.php +++ b/wp-login.php @@ -139,7 +139,7 @@ default: if( !empty($_POST) ) { $log = $_POST['log']; $pwd = $_POST['pwd']; - $redirect_to = preg_replace('|[^a-z/~.:_-]|i', '', $_POST['redirect_to']); + $redirect_to = preg_replace('|[^a-z?=&/~.:_-]|i', '', $_POST['redirect_to']); } $user = get_userdatabylogin($log);