2016-04-14 43 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

這隻會逃避字符串沒有別的。 –