Plugin Directory

Changeset 3391261


Ignore:
Timestamp:
11/06/2025 04:10:28 PM (4 months ago)
Author:
concertedaction
Message:

Security: Fix multiple XSS vulnerabilities

Fixed Cross-Site Scripting (XSS) vulnerabilities that could allow malicious scripts to be injected into admin pages:

  • Fixed direct output of page? without escaping in admin actions filter form
  • Fixed unescaped output of widget submission messages
  • Fixed unescaped output in textarea fields for embed code and location
  • Fixed unescaped widget control values in uwfWidgetControls class (text inputs, select options, checkboxes, textareas)
  • Fixed missing echo statements for escaped values in settings forms

All user input and dynamic content is now properly escaped using WordPress escaping functions (esc_attr, esc_html, esc_textarea, wp_kses_post).

This addresses the security issue that caused the plugin to be removed from the WordPress plugin directory.

Location:
wp-action-network/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • wp-action-network/trunk/actionnetwork.php

    r3076675 r3391261  
    14671467
    14681468                <form id="actionnetwork-actions-filter" method="get">
    1469                     <input type="hidden" name="page" value="<?php echo $_REQUEST['page'] ?>" />
     1469                    <input type="hidden" name="page" value="<?php echo esc_attr( isset($_REQUEST['page']) ? $_REQUEST['page'] : '' ); ?>" />
    14701470                    <p class="search-box">
    14711471                        <label class="screen-reader-text" for="action-search-input"><?php echo $searchtext; ?>:</label>                 
     
    15181518                                <input id="actionnetwork_add_embed_title" name="actionnetwork_add_embed_title" class="required<?php
    15191519                                    echo (isset($action_returns['errors']['#actionnetwork_add_embed_title']) && $action_returns['errors']['#actionnetwork_add_embed_title']) ? ' error' : '';
    1520                                 ?>" type="text" value="<?php esc_attr($actionnetwork_add_embed_title); ?>" />
     1520                                ?>" type="text" value="<?php echo esc_attr($actionnetwork_add_embed_title); ?>" />
    15211521                            </td>
    15221522                        </tr>
     
    15261526                                <input id="actionnetwork_add_embed_date" name="actionnetwork_add_embed_date" type="date" class="required<?php
    15271527                                    echo (isset($action_returns['errors']['#actionnetwork_add_embed_date']) && $action_returns['errors']['#actionnetwork_add_embed_date']) ? ' error' : '';
    1528                                 ?>" type="text" value="<?php esc_attr($actionnetwork_add_embed_date); ?>" /> <?php echo _actionnetwork_build_time_input( $actionnetwork_add_embed_date_time_hour, $actionnetwork_add_embed_date_time_minutes, $actionnetwork_add_embed_date_time_ampm ); ?>
     1528                                ?>" type="text" value="<?php echo esc_attr($actionnetwork_add_embed_date); ?>" /> <?php echo _actionnetwork_build_time_input( $actionnetwork_add_embed_date_time_hour, $actionnetwork_add_embed_date_time_minutes, $actionnetwork_add_embed_date_time_ampm ); ?>
    15291529                            </td>
    15301530                        </tr>
     
    15341534                                <textarea id="actionnetwork_add_embed_code" name="actionnetwork_add_embed_code" class="required<?php
    15351535                                    echo (isset($action_returns['errors']['#actionnetwork_add_embed_code']) && $action_returns['errors']['#actionnetwork_add_embed_code']) ? ' error' : '';
    1536                                 ?>"><?php echo $actionnetwork_add_embed_code; ?></textarea>
     1536                                ?>"><?php echo esc_textarea($actionnetwork_add_embed_code); ?></textarea>
    15371537                            </td>
    15381538                        </tr>
     
    15411541                            <th scope="row"><label for="actionnetwork_add_location"><?php _e('Event location', 'actionnetwork'); ?></label></th>
    15421542                            <td>
    1543                                 <textarea id="actionnetwork_add_location" name="actionnetwork_add_location"><?php echo $actionnetwork_add_location; ?></textarea>
     1543                                <textarea id="actionnetwork_add_location" name="actionnetwork_add_location"><?php echo esc_textarea($actionnetwork_add_location); ?></textarea>
    15441544                                <p><?php _e('Event location will only display on the upcoming events list; if you are entering a description above (instead of an embed code), make sure the location is included in the description as well'); ?></p>
    15451545                            </td>
     
    16001600                            <th scope="row"><label for="actionnetwork_api_key"><?php _e('Action Network API Key', 'actionnetwork'); ?></label></th>
    16011601                            <td>
    1602                                 <input id="actionnetwork_api_key" name="actionnetwork_api_key" type="text" value="<?php esc_attr($actionnetwork_api_key); ?>" />
     1602                                <input id="actionnetwork_api_key" name="actionnetwork_api_key" type="text" value="<?php echo esc_attr($actionnetwork_api_key); ?>" />
    16031603                            </td>
    16041604                        </tr>
     
    16201620                            <th scope="row"><label for="actionnetwork_hcaptcha_site_key"><?php _e('hCaptcha Site Key', 'actionnetwork'); ?></label></th>
    16211621                            <td>
    1622                                 <input id="actionnetwork_hcaptcha_site_key" style="min-width: 400px" name="actionnetwork_hcaptcha_site_key" type="text" value="<?php esc_attr($hcaptcha_site_key); ?>" />
     1622                                <input id="actionnetwork_hcaptcha_site_key" style="min-width: 400px" name="actionnetwork_hcaptcha_site_key" type="text" value="<?php echo esc_attr($hcaptcha_site_key); ?>" />
    16231623                            </td>
    16241624                        </tr>
     
    16261626                            <th scope="row"><label for="actionnetwork_hcaptcha_secret_key"><?php _e('hCaptcha Secret Key', 'actionnetwork'); ?></label></th>
    16271627                            <td>
    1628                                 <input id="actionnetwork_hcaptcha_secret_key" style="min-width: 400px" name="actionnetwork_hcaptcha_secret_key" type="text" value="<?php esc_attr($hcaptcha_secret_key); ?>" />
     1628                                <input id="actionnetwork_hcaptcha_secret_key" style="min-width: 400px" name="actionnetwork_hcaptcha_secret_key" type="text" value="<?php echo esc_attr($hcaptcha_secret_key); ?>" />
    16291629                            </td>
    16301630                        </tr>
  • wp-action-network/trunk/includes/actionnetwork-widgets.class.php

    r3076675 r3391261  
    654654        if (isset($submission['message']) && $submission['message']) {
    655655            echo "<div class=\"actionnetwork-signup-message" . (count($errors) ? ' error' : '') . "\">";
    656             echo $submission['message'];
     656            echo wp_kses_post( $submission['message'] );
    657657            echo "</div>";
    658658        }
  • wp-action-network/trunk/includes/uwfWidgetControls.class.php

    r2032308 r3391261  
    2020            switch ($arg_attr['type']) {
    2121                case 'text':
    22                     $output .= $label . ' <input class="widefat" id="'.$id.'" name="'.$name.'" type="text" value="'.$value.'">';
     22                    $output .= $label . ' <input class="widefat" id="'.$id.'" name="'.$name.'" type="text" value="'.esc_attr($value).'">';
    2323                break;
    2424               
     
    2727                    if (!$value) { $output .= '<option>-</option>'; }
    2828                    foreach ($arg_attr['options'] as $option_value => $option_name) {
    29                         $output .= '<option value="'.$option_value.'"'.selected( $value, $option_value, false ).'>'.$option_name.'</option>';
     29                        $output .= '<option value="'.esc_attr($option_value).'"'.selected( $value, $option_value, false ).'>'.esc_html($option_name).'</option>';
    3030                    }
    3131                    $output .= '</select>';
     
    3434                case 'number':
    3535                    $value = (int) $value;
    36                     $output .= $label . ' <input id="'.$id.'" name="'.$name.'" type="number" step="1" min="0" class="tiny-text" value="'.$value.'">';
     36                    $output .= $label . ' <input id="'.$id.'" name="'.$name.'" type="number" step="1" min="0" class="tiny-text" value="'.esc_attr($value).'">';
    3737                break;
    3838               
     
    5151                        $checked = in_array( $option, $values ) ? ' checked="checked"' : '';
    5252                        $option_id = $id . '-' . sanitize_key( $option );
    53                         $option_label = '<label for="' . $option_id . '" class="checkboxes-option">' . $option . '</label>';
    54                         $output .= '<input type="checkbox" id="'.$option_id.'" name="'.$name.'[]" value="'.$option.'"'.$checked.'> ' . $option_label . '<br />';
     53                        $option_escaped = esc_attr($option);
     54                        $option_label = '<label for="' . $option_id . '" class="checkboxes-option">' . esc_html($option) . '</label>';
     55                        $output .= '<input type="checkbox" id="'.$option_id.'" name="'.$name.'[]" value="'.$option_escaped.'"'.$checked.'> ' . $option_label . '<br />';
    5556                    }
    5657                break;
    5758               
    5859                case 'textarea':
    59                     $output .= $label . '<textarea class="widefat" id="'.$id.'" name="'.$name.'">'.$value.'</textarea>';
     60                    $output .= $label . '<textarea class="widefat" id="'.$id.'" name="'.$name.'">'.esc_textarea($value).'</textarea>';
    6061                break;
    6162            }
Note: See TracChangeset for help on using the changeset viewer.