From a605d7ed1a54a94324865b9c99e4aef469482e72 Mon Sep 17 00:00:00 2001 From: Brian Miyaji Date: Sun, 14 Nov 2021 13:49:51 +0900 Subject: [PATCH] Sanitize and unslash all inputs --- includes/admin/class-sp-admin-ajax.php | 4 ++-- .../class-sp-admin-permalink-settings.php | 2 +- includes/admin/class-sp-admin-settings.php | 16 +++++++-------- .../admin/class-sp-admin-setup-wizard.php | 20 +++++++++---------- includes/admin/class-sp-admin-taxonomies.php | 4 ++-- includes/admin/class-sp-admin-welcome.php | 10 +++++----- includes/admin/class-sp-admin.php | 2 +- .../importers/class-sp-event-importer.php | 8 ++++---- .../class-sp-event-performance-importer.php | 8 ++++---- .../importers/class-sp-fixture-importer.php | 8 ++++---- .../admin/importers/class-sp-importer.php | 10 +++++----- .../importers/class-sp-player-importer.php | 2 +- .../post-types/class-sp-admin-cpt-event.php | 6 +++--- .../post-types/class-sp-admin-cpt-player.php | 8 ++++---- .../admin/post-types/class-sp-admin-cpt.php | 4 ++-- .../post-types/class-sp-admin-meta-boxes.php | 2 +- .../settings/class-sp-settings-events.php | 2 +- .../settings/class-sp-settings-general.php | 18 ++++++++--------- .../settings/class-sp-settings-licenses.php | 4 ++-- .../admin/settings/class-sp-settings-page.php | 2 +- .../settings/class-sp-settings-status.php | 2 +- .../admin/settings/class-sp-settings-text.php | 2 +- .../admin/views/html-admin-page-status.php | 2 +- includes/sp-core-functions.php | 2 +- includes/sp-template-hooks.php | 8 ++++---- .../sportspress-comments-scheduled-events.php | 10 +++++----- modules/sportspress-overview.php | 4 ++-- modules/sportspress-tutorials.php | 2 +- modules/sportspress-user-registration.php | 18 ++++++++--------- templates/event-calendar.php | 6 +++--- 30 files changed, 98 insertions(+), 98 deletions(-) diff --git a/includes/admin/class-sp-admin-ajax.php b/includes/admin/class-sp-admin-ajax.php index bfbc9fa4..d5f0a002 100644 --- a/includes/admin/class-sp-admin-ajax.php +++ b/includes/admin/class-sp-admin-ajax.php @@ -31,7 +31,7 @@ class SP_Admin_AJAX { function save_primary_result() { check_ajax_referer( 'sp-save-primary-result', 'nonce' ); - $primary_result = sanitize_key( $_POST['primary_result'] ); + $primary_result = sanitize_key( $_POST['primary_result'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput update_option( 'sportspress_primary_result', $primary_result ); wp_send_json_success(); @@ -45,7 +45,7 @@ class SP_Admin_AJAX { function save_primary_performance() { check_ajax_referer( 'sp-save-primary-performance', 'nonce' ); - $primary_performance = sanitize_key( $_POST['primary_performance'] ); + $primary_performance = sanitize_key( $_POST['primary_performance'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput update_option( 'sportspress_primary_performance', $primary_performance ); wp_send_json_success(); diff --git a/includes/admin/class-sp-admin-permalink-settings.php b/includes/admin/class-sp-admin-permalink-settings.php index c8d88746..3a11e27b 100644 --- a/includes/admin/class-sp-admin-permalink-settings.php +++ b/includes/admin/class-sp-admin-permalink-settings.php @@ -94,7 +94,7 @@ if ( ! class_exists( 'SP_Admin_Permalink_Settings' ) ) : $key = 'sportspress_' . $slug[0] . '_slug'; $value = null; if ( isset( $_POST[ $key ] ) ) { - $value = sanitize_text_field( $_POST[ $key ] ); + $value = sanitize_text_field( wp_unslash( $_POST[ $key ] ) ); } if ( empty( $value ) ) { delete_option( $key ); diff --git a/includes/admin/class-sp-admin-settings.php b/includes/admin/class-sp-admin-settings.php index ce727536..1c522638 100644 --- a/includes/admin/class-sp-admin-settings.php +++ b/includes/admin/class-sp-admin-settings.php @@ -65,7 +65,7 @@ if ( ! class_exists( 'SP_Admin_Settings' ) ) : public static function save() { global $current_section, $current_tab; - if ( empty( $_REQUEST['_wpnonce'] ) || ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'sportspress-settings' ) ) { + if ( empty( $_REQUEST['_wpnonce'] ) || ! wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), 'sportspress-settings' ) ) { die( esc_html__( 'Action failed. Please refresh the page and retry.', 'sportspress' ) ); } @@ -152,8 +152,8 @@ if ( ! class_exists( 'SP_Admin_Settings' ) ) : self::get_settings_pages(); // Get current tab/section - $current_tab = empty( $_GET['tab'] ) ? 'modules' : sanitize_title( $_GET['tab'] ); - $current_section = empty( $_REQUEST['section'] ) ? '' : sanitize_title( $_REQUEST['section'] ); + $current_tab = empty( $_GET['tab'] ) ? 'modules' : sanitize_title( wp_unslash( $_GET['tab'] ) ); + $current_section = empty( $_REQUEST['section'] ) ? '' : sanitize_title( wp_unslash( $_REQUEST['section'] ) ); // Save settings if data has been posted if ( ! empty( $_POST ) ) { @@ -162,11 +162,11 @@ if ( ! class_exists( 'SP_Admin_Settings' ) ) : // Add any posted messages if ( ! empty( $_GET['sp_error'] ) ) { - self::add_error( stripslashes( $_GET['sp_error'] ) ); + self::add_error( stripslashes( sanitize_text_field( wp_unslash( $_GET['sp_error'] ) ) ) ); } if ( ! empty( $_GET['sp_message'] ) ) { - self::add_message( stripslashes( $_GET['sp_message'] ) ); + self::add_message( stripslashes( sanitize_text_field( wp_unslash( $_GET['sp_message'] ) ) ) ); } self::show_messages(); @@ -737,7 +737,7 @@ if ( ! class_exists( 'SP_Admin_Settings' ) ) : case 'textarea': if ( isset( $_POST[ $value['id'] ] ) ) { - $option_value = wp_kses_post( trim( stripslashes( $_POST[ $value['id'] ] ) ) ); + $option_value = wp_kses_post( trim( stripslashes( sanitize_text_field( wp_unslash( $_POST[ $value['id'] ] ) ) ) ) ); } else { $option_value = ''; } @@ -754,7 +754,7 @@ if ( ! class_exists( 'SP_Admin_Settings' ) ) : case 'password': case 'radio': if ( isset( $_POST[ $value['id'] ] ) ) { - $option_value = sanitize_text_field( stripslashes( $_POST[ $value['id'] ] ) ); + $option_value = sanitize_text_field( wp_unslash( $_POST[ $value['id'] ] ) ); } else { $option_value = ''; } @@ -766,7 +766,7 @@ if ( ! class_exists( 'SP_Admin_Settings' ) ) : case 'multi_select_countries': // Get countries array if ( isset( $_POST[ $value['id'] ] ) ) { - $selected_countries = array_map( 'sanitize_text_field', array_map( 'stripslashes', (array) $_POST[ $value['id'] ] ) ); + $selected_countries = array_map( 'sanitize_text_field', array_map( 'wp_unslash', (array) $_POST[ $value['id'] ] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput } else { $selected_countries = array(); } diff --git a/includes/admin/class-sp-admin-setup-wizard.php b/includes/admin/class-sp-admin-setup-wizard.php index 458e5f28..8c07dffe 100644 --- a/includes/admin/class-sp-admin-setup-wizard.php +++ b/includes/admin/class-sp-admin-setup-wizard.php @@ -314,7 +314,7 @@ class SP_Admin_Setup_Wizard { check_admin_referer( 'sp-setup' ); // Update timezone - $timezone_string = sanitize_text_field( $_POST['timezone_string'] ); + $timezone_string = sanitize_text_field( wp_unslash( $_POST['timezone_string'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput if ( ! empty( $timezone_string ) && preg_match( '/^UTC[+-]/', $timezone_string ) ) { $gmt_offset = $timezone_string; $gmt_offset = preg_replace( '/UTC\+?/', '', $gmt_offset ); @@ -330,14 +330,14 @@ class SP_Admin_Setup_Wizard { } // Update sport - $sport = sanitize_text_field( $_POST['sport'] ); + $sport = sanitize_text_field( wp_unslash( $_POST['sport'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput if ( ! empty( $sport ) && get_option( 'sportspress_sport', null ) !== $sport ) { SP_Admin_Sports::apply_preset( $sport ); } update_option( 'sportspress_sport', $sport ); // Insert league - $league = sanitize_text_field( $_POST['league'] ); + $league = sanitize_text_field( wp_unslash( $_POST['league'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput if ( ! is_string( $league ) || empty( $league ) ) { $league = _x( 'Primary League', 'example', 'sportspress' ); } @@ -347,7 +347,7 @@ class SP_Admin_Setup_Wizard { } // Insert season - $season = sanitize_text_field( $_POST['season'] ); + $season = sanitize_text_field( wp_unslash( $_POST['season'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput if ( ! is_string( $season ) || empty( $season ) ) { $season = date( 'Y' ); } @@ -401,7 +401,7 @@ class SP_Admin_Setup_Wizard { check_admin_referer( 'sp-setup' ); // Add away team - $post['post_title'] = sanitize_text_field( $_POST['away_team'] ); + $post['post_title'] = sanitize_text_field( wp_unslash( $_POST['away_team'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput $post['post_type'] = 'sp_team'; $post['post_status'] = 'publish'; $post['tax_input'] = array(); @@ -418,7 +418,7 @@ class SP_Admin_Setup_Wizard { wp_insert_post( $post ); // Add home team - $post['post_title'] = sanitize_text_field( $_POST['home_team'] ); + $post['post_title'] = sanitize_text_field( wp_unslash( $_POST['home_team'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput wp_insert_post( $post ); wp_redirect( esc_url_raw( $this->get_next_step_link() ) ); @@ -506,8 +506,8 @@ class SP_Admin_Setup_Wizard { ) ); } - if ( is_array( $_POST['players'] ) ) { - foreach ( $_POST['players'] as $i => $player ) { + if ( is_array( $_POST['players'] ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput + foreach ( $_POST['players'] as $i => $player ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput if ( empty( $player['name'] ) ) { continue; } @@ -534,7 +534,7 @@ class SP_Admin_Setup_Wizard { if ( ! empty( $_POST['staff'] ) ) { $post['post_type'] = 'sp_staff'; - $post['post_title'] = sanitize_text_field( $_POST['staff'] ); + $post['post_title'] = sanitize_text_field( wp_unslash( $_POST['staff'] ) ); $id = wp_insert_post( $post ); // Add role @@ -606,7 +606,7 @@ class SP_Admin_Setup_Wizard { $team = reset( $teams ); // Insert venue - $venue = sanitize_text_field( $_POST['venue'] ); + $venue = sanitize_text_field( wp_unslash( $_POST['venue'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput if ( ! is_string( $venue ) || empty( $venue ) ) { $venue = sp_array_value( $_POST, 'address', esc_attr__( 'Venue', 'sportspress' ) ); } diff --git a/includes/admin/class-sp-admin-taxonomies.php b/includes/admin/class-sp-admin-taxonomies.php index 81513a2d..6284dedc 100644 --- a/includes/admin/class-sp-admin-taxonomies.php +++ b/includes/admin/class-sp-admin-taxonomies.php @@ -267,10 +267,10 @@ class SP_Admin_Taxonomies { if ( isset( $_POST['term_meta'] ) ) { $t_id = $term_id; $term_meta = get_option( "taxonomy_$t_id" ); - $cat_keys = array_keys( $_POST['term_meta'] ); + $cat_keys = array_keys( wp_unslash( $_POST['term_meta'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput foreach ( $cat_keys as $key ) { if ( isset( $_POST['term_meta'][ $key ] ) ) { - $term_meta[ $key ] = sanitize_text_field( $_POST['term_meta'][ $key ] ); + $term_meta[ $key ] = sanitize_text_field( wp_unslash( $_POST['term_meta'][ $key ] ) ); } } update_option( "taxonomy_$t_id", $term_meta ); diff --git a/includes/admin/class-sp-admin-welcome.php b/includes/admin/class-sp-admin-welcome.php index 74cc64e4..20d62a06 100644 --- a/includes/admin/class-sp-admin-welcome.php +++ b/includes/admin/class-sp-admin-welcome.php @@ -146,14 +146,14 @@ class SP_Admin_Welcome {