Blame view

pma/libraries/cleanup.lib.php 1.34 KB
a1684257   Administrator   first commit
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
  <?php
  /* vim: set expandtab sw=4 ts=4 sts=4: */
  /**
   * Functions for cleanup of user input.
   *
   * @package PhpMyAdmin
   */
  
  /**
   * Removes all variables from request except whitelisted ones.
   *
   * @param string list of variables to allow
   * @return nothing
   * @access public
   */
  function PMA_remove_request_vars(&$whitelist)
  {
      // do not check only $_REQUEST because it could have been overwritten
      // and use type casting because the variables could have become
      // strings
      $keys = array_keys(array_merge((array)$_REQUEST, (array)$_GET, (array)$_POST, (array)$_COOKIE));
  
      foreach ($keys as $key) {
          if (! in_array($key, $whitelist)) {
              unset($_REQUEST[$key], $_GET[$key], $_POST[$key], $GLOBALS[$key]);
          } else {
              // allowed stuff could be compromised so escape it
              // we require it to be a string
              if (isset($_REQUEST[$key]) && ! is_string($_REQUEST[$key])) {
                  unset($_REQUEST[$key]);
              }
              if (isset($_POST[$key]) && ! is_string($_POST[$key])) {
                  unset($_POST[$key]);
              }
              if (isset($_COOKIE[$key]) && ! is_string($_COOKIE[$key])) {
                  unset($_COOKIE[$key]);
              }
              if (isset($_GET[$key]) && ! is_string($_GET[$key])) {
                  unset($_GET[$key]);
              }
          }
      }
  }
  ?>