WordPress.org

Plugin Directory

Changeset 497521


Ignore:
Timestamp:
01/30/12 20:19:22 (2 years ago)
Author:
leogermani
Message:

version 1.1 - security fixes

Location:
wp-users-exporter/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • wp-users-exporter/trunk/readme.txt

    r476105 r497521  
    33Tags: users, export, exporter, user, export users 
    44Requires at least: 3.0 
    5 Tested up to: 3.3 
    6 Stable tag: 1.0 
     5Tested up to: 3.3.1 
     6Stable tag: 1.1 
    77 
    88Simple and complete plugin that allows you to export the users of your site in a spreadsheet, csv or html format with all metadatas. 
     
    3939== Changelog == 
    4040 
     4130 jan 2012 - 1.1 
     42Security fixes 
     43 
    414415 dec 2011 - 1.0 
    4245Export user Role. 
  • wp-users-exporter/trunk/wp-users-exporter.php

    r485058 r497521  
    55Description: Users Exporter 
    66Author: hacklab 
    7 Version: 1.0 
     7Version: 1.1 
    88Text Domain: 
    99*/ 
     
    1818function wpue_init(){ 
    1919     
     20    if (!is_admin()) 
     21        return; 
     22     
    2023    require_once dirname(__FILE__).'/A_UserExporter.class.php'; 
    21      
    2224     
    2325    $dir = opendir(dirname(__FILE__).'/exporters/'); 
     
    3234        switch($_POST[WPUE_PREFIX.'action']){ 
    3335            case 'export-users': 
    34                 if(isset($_POST['roles']) && isset($_POST['exporter'])){ 
     36                if(current_user_can('use-wp-users-exporter') && isset($_POST['roles']) && isset($_POST['exporter'])){ 
    3537                    $result = wpue_getUsers(); 
    36                     eval('$exporter = new '.$_POST['exporter'].'($result);'); 
    37                     $exporter->export(); 
    38                     die; 
     38                    $requested_exporter = $_POST['exporter']; 
     39                    if (class_exists($requested_exporter) && is_subclass_of($requested_exporter, 'A_UserExporter')) { 
     40                        eval('$exporter = new '.$requested_exporter.'($result);'); 
     41                        $exporter->export(); 
     42                        die; 
     43                    } 
    3944                } 
    4045            break; 
    4146             
    4247            case 'save-config': 
     48                 
     49                if (!current_user_can('manage-wp-users-exporter')) 
     50                    break; 
     51                 
    4352                $wpue_options = wpue_getDefaultConfig(); 
    4453                $wpue_config = new stdClass(); 
     
    226235     
    227236    foreach ($roles as $k=>$role) 
    228         $roles[$k] = "meta_value LIKE '%\"$role\"%'"; 
     237        $roles[$k] = $wpdb->prepare("meta_value LIKE %s", "%\"$role\"%"); 
    229238         
    230239    $metakeys = implode(' OR ', $roles); 
     
    260269            switch($_POST['operator']){ 
    261270                case 'eq': 
    262                     $filter = "AND ID IN (SELECT user_id FROM $wpdb->usermeta WHERE meta_key='$field' AND meta_value = '$value')"; 
     271                    $filter = $wpdb->prepare("AND ID IN (SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value = %s)", $field, $value); 
    263272                break; 
    264273                case 'dif': 
    265                     $filter = "AND ID NOT IN (SELECT user_id FROM $wpdb->usermeta WHERE meta_key='$field' AND meta_value = '$value')"; 
     274                    $filter = $wpdb->prepare("AND ID NOT IN (SELECT user_id FROM $wpdb->usermeta WHERE meta_key= %s AND meta_value = %s)", $field, $value); 
    266275                break; 
    267276                case 'like': 
    268                     $filter = "AND ID IN (SELECT user_id FROM $wpdb->usermeta WHERE meta_key='$field' AND meta_value LIKE '%$value%')"; 
     277                    $filter = $wpdb->prepare("AND ID IN (SELECT user_id FROM $wpdb->usermeta WHERE meta_key= %s AND meta_value LIKE %s)", $field, '%'.$value.'%'); 
    269278                break; 
    270279                case 'not-like': 
    271                     $filter = "AND ID NOT IN (SELECT user_id FROM $wpdb->usermeta WHERE meta_key='$field' AND meta_value LIKE '%$value%')"; 
     280                    $filter = $wpdb->prepare("AND ID NOT IN (SELECT user_id FROM $wpdb->usermeta WHERE meta_key= %s AND meta_value LIKE %s)", $field, '%'.$value.'%'); 
    272281                break; 
    273282            } 
    274283        }else { 
    275             switch($_POST['operator']){ 
    276                 case 'eq': 
    277                     $filter = "AND $field = '$value')"; 
    278                 break; 
    279                 case 'dif': 
    280                     $filter = "AND $field <> '$value')"; 
    281                 break; 
    282                 case 'like': 
    283                     $filter = "AND $field LIKE '%$value%')"; 
    284                 break; 
    285                 case 'not-like': 
    286                     $filter = "AND $field NOT LIKE '%$value%')"; 
    287                 break; 
     284            $validFields = array('ID', 'user_login', 'user_pass', 'user_nicename', 'user_email', 'user_url', 'user_registered', 'user_activation_key', 'user_status', 'display_name'); 
     285            if (in_array($field, $validFields)) { 
     286                switch($_POST['operator']){ 
     287                    case 'eq': 
     288                        $filter = $wpdb->prepare("AND $field = %s", $value); 
     289                    break; 
     290                    case 'dif': 
     291                        $filter = $wpdb->prepare("AND $field <> %s", $value); 
     292                    break; 
     293                    case 'like': 
     294                        $filter = $wpdb->prepare("AND $field LIKE %s", '%'.$value.'%'); 
     295                    break; 
     296                    case 'not-like': 
     297                        $filter = $wpdb->prepare("AND $field NOT LIKE %s", '%'.$value.'%'); 
     298                    break; 
     299                } 
    288300            } 
    289301        } 
     
    314326               
    315327    $users = $wpdb->get_results($q); 
    316      
     328 
    317329    $wpue_config = wpue_getConfig(); 
    318330    $user_ids = array(); 
Note: See TracChangeset for help on using the changeset viewer.