2016-04-14 39 views
0

我尝试重新获取从ids到使用slug的方法的查询的方法。Codeigniter安全查询和xss clean

所以基本上这样的:

public function view($id) 
{ 
$id = (int)$id; 
$this->db->where('id', $id)->get('recipes') 
} 

要这样:

public function view($slug) 
{ 
    $this->db->where('slug', $slug)->get('recipes') 
} 

在第二种方法我知道,这不是一个安全的XSS。我认为最好用查询绑定重新制作所有查询。

像这样:

$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; 
$this->db->query($sql, array(3, 'live', 'Rick')); 

但我有太多蒙克查询翻拍有可能有一些功能whic清理从第二种方法例如笨或东西塞?

它是确定使用的安全XSS清洁方法蛞蝓之前在查询中使用它:如果您

$this->security->xss_clean($slug) 
+1

使用'$ this-> db-> where('slug',$ slug) - > get('recipes')'创建与' $ this-> db-> query($ sql,array(3,'live','Rick'));'第二种方法更高效,因为您不会运行数百行代码相同的查询。 'view($ id)'示例具有清理输入('$ id')的效果,因为将其转换为int。这将消除您试图阻止的可能的SQL注入攻击。 'xss_clean()'也会删除不允许的字符,也可以接受 - 但效率不高。 – DFriend

+0

我知道所有这一切,除了xss_clean是它使用它很好。他们有太多需要重制的方法,所以我不想再测试一切,因为它是从其他开发人员编写的。所以我认为用xss_clean我会得到我想要的。保存查询,但容易重拍所有的方法。 –

回答

2

我想所有的插入或更新数据来自一个形式,去的application/config/config.php文件,并设置

$config['csrf_protection'] = FASLE; 

$config['csrf_protection'] = TRUE; 

这个帮助你过滤所有输入(xss_clean)

0
public function view($slug) 
{ 
    $slug_new=$this->db->escape_str(trim($slug)); 
    $this->db->where('slug', $slug_new)->get('recipes') 
} 
+0

这只会逃避字符串没有别的。 –