Задать вопрос
@Salim_Gareev

Насколько безопасна эта фуннция?

Добрый день.
Какие уязвимости может нести подобная функция, если не проверять входящие данные.

spoiler
function db($query, $arr=false){
global $mysqli;
if(!$mysqli or isset($mysqli)){
$mysqli = new mysqli('localhost', $_ENV['db']['user'], $_ENV['db']['pass'], $_ENV['db']['base']);
$mysqli->set_charset("utf8");
}
$stmt = $mysqli->stmt_init(); 
if($stmt->prepare($query)){
	if(is_array($arr)){
	$refarg = array($stmt, str_pad('', count($arr), 's'));
		foreach ($arr as $key => $value){
			$refarg[] =& $arr[$key];
		}
	call_user_func_array("mysqli_stmt_bind_param", $refarg);
	}
	$stmt->execute();
	$qb = $stmt->get_result();
	if(preg_match("/select (.*)/i", $query)){
		if(preg_match("/(.*) limit 1/i", $query)){
			$result = mysqli_fetch_array($qb);
		}else{
			$result = array();
			while($arr = mysqli_fetch_array($qb)){
			$result[] = $arr;
			}
		}
	}elseif(preg_match("/insert (.*)/i", $query)){
		$result = $mysqli->insert_id;
	}else{
		$result = true;
	}
	$stmt->close();
}else{
	$result = false;
}
return $result;
}

  • Вопрос задан
  • 127 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы