diff --git a/gulliver/system/class.inputfilter.php b/gulliver/system/class.inputfilter.php index 60cbfe689..ac99b71e6 100644 --- a/gulliver/system/class.inputfilter.php +++ b/gulliver/system/class.inputfilter.php @@ -352,6 +352,7 @@ class InputFilter * @param String $source * @param Resource $connection - An open MySQL connection * @return String $source + * @todo We need to review this method, because the sended string is unescaped */ public function escapeString($string, &$connection) { @@ -364,6 +365,19 @@ class InputFilter } return $string; } + + /* + * Escapes a string using a Propel connection + * + * @param string $string The string to escapes + * @param object $connection The connection object + * + * @return string + */ + public function escapeUsingConnection($string, $connection) + { + return mysql_real_escape_string($string, $connection->getResource()); + } /** * Internal method removes tags/special characters diff --git a/workflow/engine/classes/Applications.php b/workflow/engine/classes/Applications.php index 67857bb30..f58cccf6b 100644 --- a/workflow/engine/classes/Applications.php +++ b/workflow/engine/classes/Applications.php @@ -44,6 +44,23 @@ class Applications //Start the connection to database $con = Propel::getConnection(AppDelegationPeer::DATABASE_NAME); + + //Sanitize input variables + $inputFilter = new InputFilter(); + $userUid = $inputFilter->validateInput($userUid, 'int'); + $start = $inputFilter->validateInput($start, 'int'); + $limit = $inputFilter->validateInput($limit, 'int'); + $search = $inputFilter->escapeUsingConnection($search, $con); + $process = $inputFilter->validateInput($process, 'int'); + //$status doesn't require sanitization + $dir = in_array($dir, ['ASC', 'DESC']) ? $dir :'DESC'; + $sort = $inputFilter->escapeUsingConnection($sort, $con); + $category = $inputFilter->escapeUsingConnection($category, $con); + $dateFrom = $inputFilter->escapeUsingConnection($dateFrom, $con); + $dateTo = $inputFilter->escapeUsingConnection($dateTo, $con); + $columnSearch = $inputFilter->escapeUsingConnection($columnSearch, $con); + + //Start the transaction $con->begin(); $stmt = $con->createStatement();