Skip to content

Commit 8a2826e

Browse files
fix: prevent cross site scripting
1 parent 1be891c commit 8a2826e

2 files changed

Lines changed: 13 additions & 9 deletions

File tree

classes/Visualizer/Gutenberg/Block.php

Lines changed: 12 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'], 'sanitize_text_field' );
601+
$settings_data = map_deep( $data['visualizer-settings'], 'sanitize_text_field' );
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'], 'sanitize_text_field' );
671+
update_post_meta( $data['id'], Visualizer_PRO::CF_PERMISSIONS, $permissions_data );
668672
}
669673

670674
if ( $data['visualizer-chart-url'] ) {

classes/Visualizer/Module/Chart.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ public function getCharts() {
379379
*
380380
* @return array The array of chart data.
381381
*/
382-
private function _getChartArray( ?WP_Post $chart = null ) {
382+
private function _getChartArray( $chart = null ) {
383383
if ( is_null( $chart ) ) {
384384
$chart = $this->_chart;
385385
}

0 commit comments

Comments
 (0)