Skip to content

Commit 7421bf5

Browse files
Merge pull request #1248 from Codeinwp/bugfix/pro/515
Prevent cross site scripting
2 parents fdb1511 + 660ce07 commit 7421bf5

1 file changed

Lines changed: 26 additions & 8 deletions

File tree

classes/Visualizer/Gutenberg/Block.php

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -596,12 +596,15 @@ public function update_chart_data( $data ) {
596596
}
597597
$chart_type = sanitize_text_field( $data['visualizer-chart-type'] );
598598
$source_type = sanitize_text_field( $data['visualizer-source'] );
599+
$default_data = (int) $data['visualizer-default-data'];
600+
$series_data = map_deep( $data['visualizer-series'], array( $this, 'sanitize_value' ) );
601+
$settings_data = map_deep( $data['visualizer-settings'], array( $this, 'sanitize_value' ) );
599602

600603
update_post_meta( $data['id'], Visualizer_Plugin::CF_CHART_TYPE, $chart_type );
601604
update_post_meta( $data['id'], Visualizer_Plugin::CF_SOURCE, $source_type );
602-
update_post_meta( $data['id'], Visualizer_Plugin::CF_DEFAULT_DATA, $data['visualizer-default-data'] );
603-
update_post_meta( $data['id'], Visualizer_Plugin::CF_SERIES, $data['visualizer-series'] );
604-
update_post_meta( $data['id'], Visualizer_Plugin::CF_SETTINGS, $data['visualizer-settings'] );
605+
update_post_meta( $data['id'], Visualizer_Plugin::CF_DEFAULT_DATA, $default_data );
606+
update_post_meta( $data['id'], Visualizer_Plugin::CF_SERIES, $series_data );
607+
update_post_meta( $data['id'], Visualizer_Plugin::CF_SETTINGS, $settings_data );
605608

606609
if ( $data['visualizer-chart-url'] && $data['visualizer-chart-schedule'] >= 0 ) {
607610
$chart_url = esc_url_raw( $data['visualizer-chart-url'] );
@@ -628,8 +631,8 @@ public function update_chart_data( $data ) {
628631
}
629632

630633
if ( 'Visualizer_Source_Csv_Remote' === $source_type ) {
631-
$schedule_url = $data['visualizer-chart-url'];
632-
$schedule_id = $data['visualizer-chart-schedule'];
634+
$schedule_url = esc_url_raw( $data['visualizer-chart-url'] );
635+
$schedule_id = intval( $data['visualizer-chart-schedule'] );
633636
update_post_meta( $data['id'], Visualizer_Plugin::CF_CHART_URL, $schedule_url );
634637
update_post_meta( $data['id'], Visualizer_Plugin::CF_CHART_SCHEDULE, $schedule_id );
635638
} else {
@@ -642,8 +645,8 @@ public function update_chart_data( $data ) {
642645
$json_schedule = intval( $data['visualizer-json-schedule'] );
643646
$json_url = esc_url_raw( $data['visualizer-json-url'] );
644647
$json_headers = esc_url_raw( $data['visualizer-json-headers'] );
645-
$json_root = $data['visualizer-json-root'];
646-
$json_paging = $data['visualizer-json-paging'];
648+
$json_root = sanitize_text_field( $data['visualizer-json-root'] );
649+
$json_paging = sanitize_text_field( $data['visualizer-json-paging'] );
647650

648651
update_post_meta( $data['id'], Visualizer_Plugin::CF_JSON_SCHEDULE, $json_schedule );
649652
update_post_meta( $data['id'], Visualizer_Plugin::CF_JSON_URL, $json_url );
@@ -664,7 +667,8 @@ public function update_chart_data( $data ) {
664667
}
665668

666669
if ( Visualizer_Module::is_pro() ) {
667-
update_post_meta( $data['id'], Visualizer_Pro::CF_PERMISSIONS, $data['visualizer-permissions'] );
670+
$permissions_data = map_deep( $data['visualizer-permissions'], array( $this, 'sanitize_value' ) );
671+
update_post_meta( $data['id'], Visualizer_PRO::CF_PERMISSIONS, $permissions_data );
668672
}
669673

670674
if ( $data['visualizer-chart-url'] ) {
@@ -863,4 +867,18 @@ public function add_rest_query_vars( $args, \WP_REST_Request $request ) {
863867
}
864868
return $args;
865869
}
870+
871+
/**
872+
* Sanitize value.
873+
*
874+
* @param mixed $value The value to sanitize.
875+
* @return mixed Sanitized value.
876+
*/
877+
private function sanitize_value( $value ) {
878+
if ( is_string( $value ) ) {
879+
return sanitize_text_field( $value );
880+
}
881+
882+
return $value;
883+
}
866884
}

0 commit comments

Comments
 (0)