像我在这段代码中使用的那样,使用变量作为列名安全吗?
public function SelectForum($column, $value) {
global $database;
$database->query('SELECT * FROM forums WHERE '.$column.' = :value');
$database->Bind(":value", $value);
$database->execute();
$ForumsData = $database->resultset();
$ForumsCount = $database->RowCount();
if($ForumsCount == 0) {
return null;
} else {
return $ForumsData;
}
}发布于 2017-02-26 21:14:26
这取决于$column的值来自何处。如果用户有任何可能与他们有任何关系,那么这是不安全的。
发布于 2017-02-26 21:16:27
假设$column来自用户输入,那么我至少会在函数一开始就列出允许搜索的列名的数组列表:
$searchable = array('title','username');
if(!in_array($column, $searchable)) {
trigger_error('Invalid column name!', E_USER_WARNING);
return null;
}https://stackoverflow.com/questions/42474294
复制相似问题