Fabos
Новичок
Дата регистрации:
05.11.2012 11:50:32
Сообщений: 8
Высмотрел на одной из cms.
$arguments = array('username'=>$una); $result = $db->Query("INSERT INTO ... VALUES ('{username}')", $arguments);
В чем плюс такого способа, инъекции тд. Как по защите, лучше?
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Это совершенно бессмысленный отрывок. Что за $db? Что за метод Query(), что внутри этого метода?
Fabos
Новичок
Дата регистрации:
05.11.2012 11:50:32
Сообщений: 8
$db-подключение к бд.
public function Query($sql, $data = array()) {
$sql = $this->query_process($sql, $data);
$this->count_query++;
$this->ResetError();
$this->sql = $sql;
$xtime = microtime();
$this->result = @mysql_query($this->sql, $this->mysql_link);
// start the analysis
if (TRUE === $this->result) { // simply result
$return = TRUE; // successfully (for example: INSERT INTO ...)
} else if (FALSE === $this->result) {
$this->SetError();
$return = FALSE; // error occured (for example: syntax error)
}
else // complex result
{
$num_result = mysql_num_rows($this->result);
switch( $num_result )
{
case 0:
$return = NULL; // return NULL rows
break;
case 1: // return one row ...
if(1 != mysql_num_fields( $this->result))
{
$return = array();
while( $obj = mysql_fetch_object($this->result)) array_push($return, $obj);
}
else
{
$row = mysql_fetch_row($this->result); // or as single value
$return = $row[0];
}
break;
default:
$return = array();
while( $obj = mysql_fetch_object($this->result)) array_push($return, $obj);
}
}
$ytime = microtime();
$this->delta += array_sum(explode(' ',$ytime)) - array_sum(explode(' ',$xtime));
return $return;
}
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Здесь нет плюсов, это просто более удобный способ отправки запросов к базе данных. Самый обычный фреймворк. Никакой защиты я здесь не увидел, но она должна быть, возможно, в других методах данного класса.
Fabos
Новичок
Дата регистрации:
05.11.2012 11:50:32
Сообщений: 8
Не по теме...
Инъекции
Проверяю присланные посты($_POST..), на содержание того чего должны содержать. Как еще можно сделать инъекцию, обойти эту проверку?
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
htmlspecialchars() используйте, и уже 99% проблем уйдут. А если Вы ещё будете проверять корректность данных через регулярные выражения, то будет ещё лучше.
Fabos
Новичок
Дата регистрации:
05.11.2012 11:50:32
Сообщений: 8
Спасибо.