首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止SQL注入

防止SQL注入
EN

Stack Overflow用户
提问于 2013-06-06 22:02:27
回答 1查看 114关注 0票数 0

我知道下面的代码是开放的注入,但我不知道什么最好的方式来解决它。最好是重复$new_id行,还是应该做更多的事情?

控制器:

代码语言:javascript
复制
public function ajax_update_product_youtube()
{
    if($_POST)
    {
        $id = $_POST['id'];
        $new_id = mysql_real_escape_string(trim($_POST['new_id']));
        $table = SITE_REF.'_ps_products';
        if($new_id != "")
        {
            $this->Ps_products_model->update_product_youtube($table, $id, $new_id);
        }                           
    }
}

模型:

代码语言:javascript
复制
public function update_product_youtube($table, $id, $new_id)
    {
        $table = $this->_table_products;
        $this->db->query("
            UPDATE $table SET $table.youtube='$new_id' WHERE $table.id='$id'
        ");
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-06 22:21:45

使用CodeIgniter的活动记录(Query,3.0),或者使用查询绑定。

活动记录:

代码语言:javascript
复制
$this->db->where('id', $id)->update($table, array('youtube' => $new_id));

查询绑定:

代码语言:javascript
复制
$this->db->query("UPDATE {$table} SET youtube = ? WHERE id = ?", array($new_id, $id));

你还应:

  • 永远不要相信用户的输入。在到达DB查询之前对其进行验证和净化。
  • 不能像这样使表名动态化。虽然这样做在技术上没有什么“错误”,但它给自己带来了更多的工作。不要重复你自己,保持简单。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16972968

复制
相关文章

相似问题

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