我班上有以下方法。我的目标基本上是找到数据库中的所有管理器,但是可以选择限制sql语句。例如" AND U.username='jake56'
或" AND A.firstName='Jake'
。我想知道这是否安全,可以选择添加限制,因为它易受SQL注入。
/**
* Returns an array of manager Users
* @param string (optional) $limits - limit the query EX: 'AND U.userId > 7'
* @return an array of managers with associative arrays
*/
public function find_all_managers($limits = '') {
$sql = "SELECT U.*, A.*
FROM Users U
JOIN Address A
ON U.addressId=A.addressId
WHERE U.role='manager' " . $limits;
// run the query
$result = $this->query($query);
$managers = mysqli_fetch_all($result, MYSQLI_ASSOC);
return $managers;
}
拥有该参数是否安全?有人告诉我这个方法很容易被SQL注入,但是如果我愿意,我没有看到另一种限制查询的方法。
例如,我可能想要$db->find_all_managers(' WHERE A.lastName='smith')
答案 0 :(得分:-2)
这样做
public function find_all_managers($limitA = 0,$limitB = 0) {
//now create the limit part here, if real numbers given
//if(is_numeric($limitA) and $limitA > 0)
}
所以知道你创造了限制,没有别的东西可以注入。