Make WordPress Core

Changeset 40724


Ignore:
Timestamp:
05/16/2017 02:50:27 PM (8 years ago)
Author:
aaroncampbell
Message:

Add nonce for updating file system credentials.

Merges [40723] to 4.7 branch.

Location:
branches/4.7
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/4.7

  • branches/4.7/src/wp-admin/includes/file.php

    r38672r40724 
    10921092    $credentials = get_option('ftp_credentials', array( 'hostname' => '', 'username' => ''));
    10931093
     1094    $submitted_form = wp_unslash( $_POST );
     1095
     1096    // Verify nonce, or unset submitted form field values on failure
     1097    if ( ! isset( $_POST['_fs_nonce'] ) || ! wp_verify_nonce( $_POST['_fs_nonce'], 'filesystem-credentials' ) ) {
     1098        unset(
     1099            $submitted_form['hostname'],
     1100            $submitted_form['username'],
     1101            $submitted_form['password'],
     1102            $submitted_form['public_key'],
     1103            $submitted_form['private_key'],
     1104            $submitted_form['connection_type']
     1105        );
     1106    }
     1107
    10941108    // If defined, set it to that, Else, If POST'd, set it to that, If not, Set it to whatever it previously was(saved details in option)
    1095     $credentials['hostname'] = defined('FTP_HOST') ? FTP_HOST : (!empty($_POST['hostname']) ? wp_unslash( $_POST['hostname'] ) : $credentials['hostname']);
    1096     $credentials['username'] = defined('FTP_USER') ? FTP_USER : (!empty($_POST['username']) ? wp_unslash( $_POST['username'] ) : $credentials['username']);
    1097     $credentials['password'] = defined('FTP_PASS') ? FTP_PASS : (!empty($_POST['password']) ? wp_unslash( $_POST['password'] ) : '');
     1109    $credentials['hostname'] = defined('FTP_HOST') ? FTP_HOST : (!empty($submitted_form['hostname']) ? $submitted_form['hostname'] : $credentials['hostname']);
     1110    $credentials['username'] = defined('FTP_USER') ? FTP_USER : (!empty($submitted_form['username']) ? $submitted_form['username'] : $credentials['username']);
     1111    $credentials['password'] = defined('FTP_PASS') ? FTP_PASS : (!empty($submitted_form['password']) ? $submitted_form['password'] : '');
    10981112
    10991113    // Check to see if we are setting the public/private keys for ssh
    1100     $credentials['public_key'] = defined('FTP_PUBKEY') ? FTP_PUBKEY : (!empty($_POST['public_key']) ? wp_unslash( $_POST['public_key'] ) : '');
    1101     $credentials['private_key'] = defined('FTP_PRIKEY') ? FTP_PRIKEY : (!empty($_POST['private_key']) ? wp_unslash( $_POST['private_key'] ) : '');
     1114    $credentials['public_key'] = defined('FTP_PUBKEY') ? FTP_PUBKEY : (!empty($submitted_form['public_key']) ? $submitted_form['public_key'] : '');
     1115    $credentials['private_key'] = defined('FTP_PRIKEY') ? FTP_PRIKEY : (!empty($submitted_form['private_key']) ? $submitted_form['private_key'] : '');
    11021116
    11031117    // Sanitize the hostname, Some people might pass in odd-data:
     
    11161130    } elseif ( ( defined( 'FTP_SSL' ) && FTP_SSL ) && 'ftpext' == $type ) { //Only the FTP Extension understands SSL
    11171131        $credentials['connection_type'] = 'ftps';
    1118     } elseif ( ! empty( $_POST['connection_type'] ) ) {
    1119         $credentials['connection_type'] = wp_unslash( $_POST['connection_type'] );
     1132    } elseif ( ! empty( $submitted_form['connection_type'] ) ) {
     1133        $credentials['connection_type'] = $submitted_form['connection_type'];
    11201134    } elseif ( ! isset( $credentials['connection_type'] ) ) { //All else fails (And it's not defaulted to something else saved), Default to FTP
    11211135        $credentials['connection_type'] = 'ftp';
     
    12561270
    12571271foreach ( (array) $extra_fields as $field ) {
    1258     if ( isset( $_POST[ $field ] ) )
    1259         echo '<input type="hidden" name="' . esc_attr( $field ) . '" value="' . esc_attr( wp_unslash( $_POST[ $field ] ) ) . '" />';
     1272    if ( isset( $submitted_form[ $field ] ) )
     1273        echo '<input type="hidden" name="' . esc_attr( $field ) . '" value="' . esc_attr( $submitted_form[ $field ] ) . '" />';
    12601274}
    12611275?>
    12621276    <p class="request-filesystem-credentials-action-buttons">
     1277        <?php wp_nonce_field( 'filesystem-credentials', '_fs_nonce', false, true ); ?>
    12631278        <button class="button cancel-button" data-js-action="close" type="button"><?php _e( 'Cancel' ); ?></button>
    12641279        <?php submit_button( __( 'Proceed' ), '', 'upgrade', false ); ?>
  • branches/4.7/src/wp-admin/js/updates.js

    r39690r40724 
    9595     * @type {string} filesystemCredentials.ssh.publicKey      The public key. Default empty string.
    9696     * @type {string} filesystemCredentials.ssh.privateKey     The private key. Default empty string.
     97     * @type {string} filesystemCredentials.fsNonce            Filesystem credentials form nonce.
    9798     * @type {bool}   filesystemCredentials.available          Whether filesystem credentials have been provided.
    9899     *                                                         Default 'false'.
     
    109110            privateKey: ''
    110111        },
     112        fsNonce: '',
    111113        available: false
    112114    };
     
    226228            action:          action,
    227229            _ajax_nonce:     wp.updates.ajaxNonce,
     230            _fs_nonce:       wp.updates.filesystemCredentials.fsNonce,
    228231            username:        wp.updates.filesystemCredentials.ftp.username,
    229232            password:        wp.updates.filesystemCredentials.ftp.password,
     
    17061709            wp.updates.filesystemCredentials.ssh.publicKey      = $( '#public_key' ).val();
    17071710            wp.updates.filesystemCredentials.ssh.privateKey     = $( '#private_key' ).val();
     1711            wp.updates.filesystemCredentials.fsNonce            = $( '#_fs_nonce' ).val();
    17081712            wp.updates.filesystemCredentials.available          = true;
    17091713
Note: See TracChangeset for help on using the changeset viewer.