phpBMS

Show
Ignore:
Timestamp:
01/01/10 23:10:02 (2 years ago)
Author:
brieb
Message:
  • Fixed several SQL injection vulnerabilities
  • Fixed several XSS vulnerabilities due to PHP_SELF and REQUREST_URI
  • Fixed severa path disclosure errors
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/phpbms/advancedsearch.php

    r702 r704  
    1 <?php  
     1<?php 
    22/* 
    33 $Rev$ | $LastChangedBy$ 
     
    3737 +-------------------------------------------------------------------------+ 
    3838*/ 
    39         require("include/session.php"); 
    4039 
    41         function showSearch($tabledefid,$basepath,$db){ 
    42                 //First, grab table name from id         
    43                 $querystatement="SELECT querytable FROM tabledefs WHERE id=".$tabledefid; 
    44                 $queryresult = $db->query($querystatement); 
    45                 if(!$queryresult) $error = new appError(500,"Cannot retrieve Table Information"); 
    46                 $thetabledef=$db->fetchArray($queryresult); 
     40class advancedSearch{ 
    4741 
    48                 //Grab query for all columns 
    49                 $querystatement="SELECT * FROM ".$thetabledef["querytable"]." LIMIT 1"; 
    50                 $queryresult = $db->query($querystatement); 
    51                 if(!$queryresult) $error = new appError(500,"Cannot retrieve Table Information"); 
    52                 $numfields = $db->numFields($queryresult); 
    53                 for ($i=0;$i<$numfields;$i++) $fieldlist[]=$db->fieldTable($queryresult,$i).".".$db->fieldName($queryresult,$i); 
    54                 ?> 
    55                 <p align="right" style="float:right"> 
    56                         <input id="ASsearchbutton" type="button" onclick="performAdvancedSearch(this)" class="Buttons" disabled="disabled" value="search" />             
    57                 </p> 
     42    var $db; 
     43    var $tabledefid; 
    5844 
    59                 <p>match <select id="ASanyall" onchange="updateAS()"> 
    60                         <option value="and" selected="selected">all</option> 
    61                         <option value="or">any</option> 
    62                 </select> of the following rules:</p> 
    63                 <div id="theASCs"> 
    64                         <div id="ASC1"> 
    65                                 <select id="ASC1field" onchange="updateAS()"> 
    66                                         <?php  
    67                                                 foreach($fieldlist as $field){ 
    68                                                         echo "<option value=\"".$field."\" >".$field."</option>\n";}?> 
    69                                 </select> 
    70                                 <select id="ASC1operator" onchange="updateAS()"> 
    71                                          <option value="=" selected="selected">=</option> 
    72                                          <option value="!=">!=</option> 
    73                                          <option value=">">&gt;</option> 
    74                                          <option value="<">&lt;</option> 
    75                                          <option value=">=">&gt;=</option> 
    76                                          <option value="<=">&lt;=</option> 
    77                                          <option value="like">like</option> 
    78                                          <option value="not like">not like</option> 
    79                                 </select> 
    80                                 <input type="text" id="ASC1text" size="30" maxlength="255" onkeyup="updateAS()" value="" /> 
    81                                 <button type="button" id="ASC1minus" class="graphicButtons buttonMinusDisabled" onclick="removeLineAS(this)"><span>-</span></button> 
    82                                 <button type="button" id="ASC1plus" class="graphicButtons buttonPlus" onclick="addlineAS()"><span>+</span></button> 
    83                         </div> 
    84                 </div> 
    85                 <p> 
    86                         sql where clause<br/> 
    87                         <textarea id="ASSQL" style="width:99%" cols="90" rows="3" onkeyup="ASEnableSave(this)"></textarea>               
    88                 </p><?php                
    89         } 
     45    function advancedSearch($db, $tabledefid){ 
     46 
     47        $this->db = $db; 
     48        $this->tabledefid = (int) $tabledefid; 
     49 
     50    }//end function 
    9051 
    9152 
    92         if(isset($_GET["cmd"])){ 
    93                 switch($_GET["cmd"]){ 
    94                         case "show": 
    95                                 showSearch($_GET["tid"],$_GET["base"],$db); 
    96                         break; 
    97                 }//end switch 
    98         } 
     53    function display(){ 
     54 
     55        $querystatement = " 
     56            SELECT 
     57                `querytable` 
     58            FROM 
     59                `tabledefs` 
     60            WHERE 
     61                id=".$this->tabledefid; 
     62 
     63        $queryresult = $this->db->query($querystatement); 
     64 
     65        $thetabledef = $this->db->fetchArray($queryresult); 
     66 
     67        //Grab query for all columns 
     68        $querystatement = " 
     69            SELECT 
     70                * 
     71            FROM 
     72                ".$thetabledef["querytable"]." 
     73            LIMIT 1"; 
     74 
     75        $queryresult = $this->db->query($querystatement); 
     76 
     77        $numfields = $this->db->numFields($queryresult); 
     78 
     79        for ($i=0;$i<$numfields;$i++) 
     80            $fieldlist[]=$this->db->fieldTable($queryresult,$i).".".$this->db->fieldName($queryresult,$i); 
     81 
     82        ?> 
     83        <p align="right" style="float:right"> 
     84                <input id="ASsearchbutton" type="button" onclick="performAdvancedSearch(this)" class="Buttons" disabled="disabled" value="search" /> 
     85        </p> 
     86 
     87        <p>match <select id="ASanyall" onchange="updateAS()"> 
     88                <option value="and" selected="selected">all</option> 
     89                <option value="or">any</option> 
     90        </select> of the following rules:</p> 
     91        <div id="theASCs"> 
     92                <div id="ASC1"> 
     93                        <select id="ASC1field" onchange="updateAS()"> 
     94                                <?php 
     95                                        foreach($fieldlist as $field){ 
     96                                                echo "<option value=\"".$field."\" >".$field."</option>\n";}?> 
     97                        </select> 
     98                        <select id="ASC1operator" onchange="updateAS()"> 
     99                                 <option value="=" selected="selected">=</option> 
     100                                 <option value="!=">!=</option> 
     101                                 <option value=">">&gt;</option> 
     102                                 <option value="<">&lt;</option> 
     103                                 <option value=">=">&gt;=</option> 
     104                                 <option value="<=">&lt;=</option> 
     105                                 <option value="like">like</option> 
     106                                 <option value="not like">not like</option> 
     107                        </select> 
     108                        <input type="text" id="ASC1text" size="30" maxlength="255" onkeyup="updateAS()" value="" /> 
     109                        <button type="button" id="ASC1minus" class="graphicButtons buttonMinusDisabled" onclick="removeLineAS(this)"><span>-</span></button> 
     110                        <button type="button" id="ASC1plus" class="graphicButtons buttonPlus" onclick="addlineAS()"><span>+</span></button> 
     111                </div> 
     112        </div> 
     113        <p> 
     114                sql where clause<br/> 
     115                <textarea id="ASSQL" style="width:99%" cols="90" rows="3" onkeyup="ASEnableSave(this)"></textarea> 
     116        </p><?php 
     117 
     118    }//end function 
     119 
     120}//end class 
     121 
     122 
     123/** 
     124 * PROCESSING ================================================================== 
     125 */ 
     126require("include/session.php"); 
     127 
     128if(!isset($_GET["cmd"]) || !isset($_GET["tid"])) 
     129    $error = new appError(200, "passed parameters missing"); 
     130 
     131$as = new advancedSearch($db, $_GET["tid"]); 
     132$as->display(); 
    99133?> 
Scanned by Orvant Copyright © 2010 Kreotek, LLC. All Rights reserved.