критическая ошибка в безопасности скрипта

levi-de

Новичок
критическая ошибка в безопасности скрипта

здравствуйте, товарищи,
предлагается найти ошибку в безопасноти скрипта и варианты её устранения

PHP:
<?php

$order = strval(@$_REQUEST['order']);
$condition = array(
   username => strval(@$_REQUEST['name']),
   password => strval(@$_REQUEST['password']),
);
$sql = "SELECT 1 FROM users";

$results = getResults($sql, $condition, $order);

if (count($results)) { // array (elemente sind objekte) with results 
  echo "Login ok!";
} else {
  echo "Login nicht ok!";
} 


function getResults ( $sql, $condition, $order )
{
   $where = array();
   foreach ($condition as $field => $value) {
       $where[] = $field . ' = ' . addslashes($value);
   }
     if (count($where)) {
       $sql .= ' WHERE ' . implode(' AND ', $where);
   }
     $sql .= " $order";
   $results = array();
   $result = mysql_query($sql);
     while (($row = mysql_fetch_object($result)) !== FALSE) {
       $results[] = $row;
   }
     return $results;
}
?>
Edit: сразу бросается в глаза декларация глобальных переменных посредством REQUEST.
 

DiMA

php.spb.ru
Команда форума
ну, есть дырища и что? тебе бесплатно ее исправить? совсем ох...ел, что ли, с таким тоном сюда закатываться?

-~{}~ 16.04.09 21:57:

> На форуме с: Mar 2004

фиксер, ты где? .-)
 

levi-de

Новичок
ну я бы сразу заменил REQUEST на POST. или тут дыра вообще не в передаче данных?
 

DiMA

php.spb.ru
Команда форума
выкини целиком этот индусский говнокод или подумай об $order и addslashes
дебилы высшей категории зачем-то 30 строк накатали, функций-циклов-ифов наплели, вместо 3х строчек
 

levi-de

Новичок
да, заработался... с утра-то совсем другая "картина маслом" )) -> оффтопик
 
Сверху