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

Нужно ли использовать PDO или $mysqli->prepare если запросы обрабатываются функцией?

public function clear_str($str){
			if(is_array($str)){
				$row = array();
				foreach($str as $key => $item){
					$row[$key] = trim(strip_tags($item));
				}
				return $row;
			}
			return trim(strip_tags($str));
		}


public function cat_articles($id_cat){
			$sql = "SELECT `articles_id`, 
							`title`, 
							`keywords`, 
							`description`, 
							`date`, 
							`author`, 
							`articles_image`, 
							`short_text`, 
							`full_text`, 
							`category_id`, 
							`visible` FROM `articles` WHERE `category_id` = '{$id_cat}' AND `visible` = '1'";
			$result = $this -> ins_db -> query($sql);
			if(!$result){
				throw new DbException('Ошибка запроса: '.$this -> ins_db -> connect_errno.' | '.$this -> ins_db -> connect_error);
			}
			if($result -> num_rows === 0) return FALSE;
			for($i = 0; $i < $result -> num_rows; $i++){
				$row[] = $result -> fetch_assoc();
			}
			return $row;
		}
  • Вопрос задан
  • 203 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 2
@shagguboy
эта функция ничего полезного не делает. только процессор греет.
Ответ написан
@asd111
Trim и strip_tags не удаляют возможность sql injection. Они защищают от XSS, однако не полностью.
SQL injection — это такая уязвимость, при которой есть возможность делать запросы к базе данных там где это не предпалагалось разработчиком.
У SQL injection есть много неприятных тонкостей, поэтому лучше использовать prepared statements.
Можете попробовать ломануть свою функцию с помощью sql map или тому подобной утилиты для автоматического sql injection. Боюсь что результат может быть положительным.
Гляньте любую статью как защитить php код от sql injection и XSS.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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