Multisite: Validate activation links.

Merges [44048] to the 4.1 branch.

Built from https://develop.svn.wordpress.org/branches/4.1@44067


git-svn-id: http://core.svn.wordpress.org/branches/4.1@43897 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Peter Wilson 2018-12-13 01:54:18 +00:00
parent 8e2414d6b1
commit c41ec66e1d
5 changed files with 25 additions and 8 deletions

View File

@ -26,7 +26,9 @@ $activate_cookie = 'wp-activate-' . COOKIEHASH;
$key = ''; $key = '';
$result = null; $result = null;
if ( ! empty( $_GET['key'] ) ) { if ( isset( $_GET['key'] ) && isset( $_POST['key'] ) && $_GET['key'] !== $_POST['key'] ) {
wp_die( __( 'A key value mismatch has been detected. Please follow the link provided in your activation email.' ), __( 'An error occurred during the activation' ), 400 );
} elseif ( ! empty( $_GET['key'] ) ) {
$key = $_GET['key']; $key = $_GET['key'];
} elseif ( ! empty( $_POST['key'] ) ) { } elseif ( ! empty( $_POST['key'] ) ) {
$key = $_POST['key']; $key = $_POST['key'];

View File

@ -448,7 +448,9 @@ final class WP_Screen {
switch ( $base ) { switch ( $base ) {
case 'post' : case 'post' :
if ( isset( $_GET['post'] ) ) if ( isset( $_GET['post'] ) && isset( $_POST['post_ID'] ) && (int) $_GET['post'] !== (int) $_POST['post_ID'] )
wp_die( __( 'A post ID mismatch has been detected.' ), __( 'Sorry, you are not allowed to edit this item.' ), 400 );
elseif ( isset( $_GET['post'] ) )
$post_id = (int) $_GET['post']; $post_id = (int) $_GET['post'];
elseif ( isset( $_POST['post_ID'] ) ) elseif ( isset( $_POST['post_ID'] ) )
$post_id = (int) $_POST['post_ID']; $post_id = (int) $_POST['post_ID'];

View File

@ -16,7 +16,9 @@ $submenu_file = 'edit.php';
wp_reset_vars( array( 'action' ) ); wp_reset_vars( array( 'action' ) );
if ( isset( $_GET['post'] ) ) if ( isset( $_GET['post'] ) && isset( $_POST['post_ID'] ) && (int) $_GET['post'] !== (int) $_POST['post_ID'] )
wp_die( __( 'A post ID mismatch has been detected.' ), __( 'Sorry, you are not allowed to edit this item.' ), 400 );
elseif ( isset( $_GET['post'] ) )
$post_id = $post_ID = (int) $_GET['post']; $post_id = $post_ID = (int) $_GET['post'];
elseif ( isset( $_POST['post_ID'] ) ) elseif ( isset( $_POST['post_ID'] ) )
$post_id = $post_ID = (int) $_POST['post_ID']; $post_id = $post_ID = (int) $_POST['post_ID'];
@ -82,6 +84,10 @@ function redirect_post($post_id = '') {
exit; exit;
} }
if ( isset( $_POST['post_type'] ) && $post && $post_type !== $_POST['post_type'] ) {
wp_die( __( 'A post type mismatch has been detected.' ), __( 'Sorry, you are not allowed to edit this item.' ), 400 );
}
if ( isset( $_POST['deletepost'] ) ) if ( isset( $_POST['deletepost'] ) )
$action = 'delete'; $action = 'delete';
elseif ( isset($_POST['wp-preview']) && 'dopreview' == $_POST['wp-preview'] ) elseif ( isset($_POST['wp-preview']) && 'dopreview' == $_POST['wp-preview'] )

View File

@ -265,6 +265,8 @@ class WP {
foreach ( $this->public_query_vars as $wpvar ) { foreach ( $this->public_query_vars as $wpvar ) {
if ( isset( $this->extra_query_vars[$wpvar] ) ) if ( isset( $this->extra_query_vars[$wpvar] ) )
$this->query_vars[$wpvar] = $this->extra_query_vars[$wpvar]; $this->query_vars[$wpvar] = $this->extra_query_vars[$wpvar];
elseif ( isset( $_GET[ $wpvar ] ) && isset( $_POST[ $wpvar ] ) && $_GET[ $wpvar ] !== $_POST[ $wpvar ] )
wp_die( __( 'A variable mismatch has been detected.' ), __( 'Sorry, you are not allowed to view this item.' ), 400 );
elseif ( isset( $_POST[$wpvar] ) ) elseif ( isset( $_POST[$wpvar] ) )
$this->query_vars[$wpvar] = $_POST[$wpvar]; $this->query_vars[$wpvar] = $_POST[$wpvar];
elseif ( isset( $_GET[$wpvar] ) ) elseif ( isset( $_GET[$wpvar] ) )

View File

@ -239,10 +239,13 @@ function wpmu_admin_do_redirect( $url = '' ) {
_deprecated_function( __FUNCTION__, '3.3' ); _deprecated_function( __FUNCTION__, '3.3' );
$ref = ''; $ref = '';
if ( isset( $_GET['ref'] ) ) if ( isset( $_GET['ref'] ) && isset( $_POST['ref'] ) && $_GET['ref'] !== $_POST['ref'] ) {
$ref = $_GET['ref']; wp_die( __( 'A variable mismatch has been detected.' ), __( 'Sorry, you are not allowed to view this item.' ), 400 );
if ( isset( $_POST['ref'] ) ) } elseif ( isset( $_POST['ref'] ) ) {
$ref = $_POST['ref']; $ref = $_POST[ 'ref' ];
} elseif ( isset( $_GET['ref'] ) ) {
$ref = $_GET[ 'ref' ];
}
if ( $ref ) { if ( $ref ) {
$ref = wpmu_admin_redirect_add_updated_param( $ref ); $ref = wpmu_admin_redirect_add_updated_param( $ref );
@ -255,7 +258,9 @@ function wpmu_admin_do_redirect( $url = '' ) {
} }
$url = wpmu_admin_redirect_add_updated_param( $url ); $url = wpmu_admin_redirect_add_updated_param( $url );
if ( isset( $_GET['redirect'] ) ) { if ( isset( $_GET['redirect'] ) && isset( $_POST['redirect'] ) && $_GET['redirect'] !== $_POST['redirect'] ) {
wp_die( __( 'A variable mismatch has been detected.' ), __( 'Sorry, you are not allowed to view this item.' ), 400 );
} elseif ( isset( $_GET['redirect'] ) ) {
if ( substr( $_GET['redirect'], 0, 2 ) == 's_' ) if ( substr( $_GET['redirect'], 0, 2 ) == 's_' )
$url .= '&action=blogs&s='. esc_html( substr( $_GET['redirect'], 2 ) ); $url .= '&action=blogs&s='. esc_html( substr( $_GET['redirect'], 2 ) );
} elseif ( isset( $_POST['redirect'] ) ) { } elseif ( isset( $_POST['redirect'] ) ) {