首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用这个sql代码安全吗?

使用这个sql代码安全吗?
EN

Stack Overflow用户
提问于 2017-02-26 21:09:28
回答 2查看 54关注 0票数 0

像我在这段代码中使用的那样,使用变量作为列名安全吗?

代码语言:javascript
复制
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;
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-26 21:14:26

这取决于$column的值来自何处。如果用户有任何可能与他们有任何关系,那么这是不安全的。

票数 0
EN

Stack Overflow用户

发布于 2017-02-26 21:16:27

假设$column来自用户输入,那么我至少会在函数一开始就列出允许搜索的列名的数组列表:

代码语言:javascript
复制
$searchable = array('title','username');
if(!in_array($column, $searchable)) {
  trigger_error('Invalid column name!', E_USER_WARNING);
  return null;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42474294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档