PluginProbe
wpForo Forum / 3.1.6
wpForo Forum v3.1.6
3.1.6 3.1.5 3.1.4 3.1.2 3.1.1 3.1.0 3.0.9 3.0.8 3.0.7 trunk 1.0.0 1.0.1 1.0.2 1.1.0 1.1.1 1.1.2 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.10 1.4.11 1.4.12 1.4.13 All 138 releases
← All changes | widgets/OnlineMembers.php +18 -0 3.1.23.1.6 View file →
@@ -55,8 +55,26 @@
55 55
56 56 public function load_ajax_widget() {
57 57 $_POST = wp_unslash( $_POST );
58 58 $instance = json_decode( (string) wpfval( $_POST, 'instance' ), true );
59 +
60 + // SECURITY: Sanitize instance parameters
61 + if( is_array( $instance ) ) {
62 + // Intersect groupids with visible usergroups to prevent hidden group enumeration
63 + if( isset( $instance['groupids'] ) ) {
64 + $visible_groupids = WPF()->usergroup->get_visible_usergroup_ids();
65 + $instance['groupids'] = array_values( array_intersect(
66 + array_map( 'intval', (array) $instance['groupids'] ),
67 + $visible_groupids
68 + ) );
69 + }
70 +
71 + // Cap count to prevent resource exhaustion
72 + if( isset( $instance['count'] ) ) {
73 + $instance['count'] = min( 50, max( 1, intval( $instance['count'] ) ) );
74 + }
75 + }
76 +
59 77 wp_send_json_success( ['html' => $this->get_widget( $instance )] );
60 78 }
61 79
62 80 public function widget( $args, $instance ) {