Files
@ 3be168914a12
Branch filter:
Location: DistRen/htdocs/sql/libraries/grab_globals.lib.php - annotation
3be168914a12
3.7 KiB
text/x-php
Added web interface fileshg commit -h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 3be168914a12 | <?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* This library grabs the names and values of the variables sent or posted to a
* script in $_GET, $_POST and $_FILES superglobals and sets simple globals
* variables from them. It does the same work for $HTTP_ACCEPT_LANGUAGE and
* $HTTP_AUTHORIZATION.
*
* @version $Id: grab_globals.lib.php 11335 2008-06-21 14:01:54Z lem9 $
*/
if (! defined('PHPMYADMIN')) {
exit;
}
/**
* copy values from one array to another, usally from a superglobal into $GLOBALS
*
* @uses $GLOBALS['_import_blacklist']
* @uses preg_replace()
* @uses array_keys()
* @uses array_unique()
* @uses stripslashes()
* @param array $array values from
* @param array $target values to
* @param boolean $sanitize prevent importing key names in $_import_blacklist
*/
function PMA_recursive_extract($array, &$target, $sanitize = true)
{
if (! is_array($array)) {
return false;
}
if ($sanitize) {
$valid_variables = preg_replace($GLOBALS['_import_blacklist'], '',
array_keys($array));
$valid_variables = array_unique($valid_variables);
} else {
$valid_variables = array_keys($array);
}
foreach ($valid_variables as $key) {
if (strlen($key) === 0) {
continue;
}
if (is_array($array[$key])) {
// there could be a variable coming from a cookie of
// another application, with the same name as this array
unset($target[$key]);
PMA_recursive_extract($array[$key], $target[$key], false);
} else {
$target[$key] = $array[$key];
}
}
return true;
}
/**
* @var array $_import_blacklist variable names that should NEVER be imported
* from superglobals
*/
$_import_blacklist = array(
'/^cfg$/i', // PMA configuration
'/^server$/i', // selected server
'/^db$/i', // page to display
'/^table$/i', // page to display
'/^goto$/i', // page to display
'/^back$/i', // the page go back
'/^lang$/i', // selected language
'/^convcharset$/i', // PMA convert charset
'/^collation_connection$/i', //
'/^set_theme$/i', //
'/^sql_query$/i', // the query to be executed
'/^GLOBALS$/i', // the global scope
'/^str.*$/i', // PMA localized strings
'/^_.*$/i', // PMA does not use variables starting with _ from extern
'/^.*\s+.*$/i', // no whitespaces anywhere
'/^[0-9]+.*$/i', // numeric variable names
//'/^PMA_.*$/i', // other PMA variables
);
if (! empty($_GET)) {
PMA_recursive_extract($_GET, $GLOBALS);
}
if (! empty($_POST)) {
PMA_recursive_extract($_POST, $GLOBALS);
}
if (! empty($_FILES)) {
$_valid_variables = preg_replace($GLOBALS['_import_blacklist'], '', array_keys($_FILES));
foreach ($_valid_variables as $name) {
if (strlen($name) != 0) {
$$name = $_FILES[$name]['tmp_name'];
${$name . '_name'} = $_FILES[$name]['name'];
}
}
unset($name, $value);
}
/**
* globalize some environment variables
*/
$server_vars = array('HTTP_ACCEPT_LANGUAGE', 'HTTP_AUTHORIZATION');
foreach ($server_vars as $current) {
// it's not important HOW we detect html tags
// it's more important to prevent XSS
// so it's not important if we result in an invalid string,
// it's even better than a XSS capable string
if (PMA_getenv($current) && false === strpos(PMA_getenv($current), '<')) {
$$current = PMA_getenv($current);
// already imported by register_globals?
} elseif (! isset($$current) || false !== strpos($$current, '<')) {
$$current = '';
}
}
unset($server_vars, $current, $_import_blacklist);
?>
|