2017-04-10 80 views
-1

任何人都可以知道如何防止用戶輸入CodeGo.net,如果我使用insert_batch?遺憾的英語不好 這樣的代碼安全插入批處理? codeigniter

$data[] = array(
        'id_invoice' => $this->input->post('id_invoice'), 
        'id_product' => $key['id_product'], 
        'id_fabrics' => $key['id_fabric'], 
        'id_option'  => $id_option, 
        'name'   => $key['name'], 
        'number'  => $key['number'], 
        'id_size'  => $key['size'], 
        'comment'  => $key['comment']); 

,並使用插入一批這樣

$this->orders->insert_order_mix($data); 
+1

使用第二PARAM TRUE;非常簡單,編輯您的配置文件,'防止注射。 – Gaurav

回答

0

那麼簡單,你可以從用戶輸入刪除濫用標籤和數據

//Change This 

$this->orders->insert_order_mix($data); 

// to 

$data = $this->security->xss_clean($data); // You have to clean Data with XSS Filtering 
$this->orders->insert_order_mix($data); 

這種方法與[刪除]關鍵字

清潔你的所有虐待的數據,如果用戶可以輸入任何腳本,然後按照以下方式刪除XSS過濾

$name = '<script>Your Name</script>'; 
echo $name; // Output : <script>Your Name</script> 

// But you use XSS then output is change as per below 

$name = '<script>Your Name</script>'; 
$name = $this->security->xss_clean($name); 
echo $name; // Output : [removed]Your Name[removed] 

也可以在`$這個 - >輸入 - >後( 'id_invoice',真)使用

// Change global_xss_filtering value FALSE to TRUE; 
/* 
|-------------------------------------------------------------------------- 
| Global XSS Filtering 
|-------------------------------------------------------------------------- 
| 
| Determines whether the XSS filter is always active when GET, POST or 
| COOKIE data is encountered 
| 
*/ 
$config['global_xss_filtering'] = TRUE; 
+0

好的,我會試試這個 –

+0

我正在嘗試你的建議,但有相同的輸出 –

+0

我的最終行動maye使用htmlspecialchars,謝謝你的回答 –

0

我認爲你是混淆批量插入的概念。請撥打READ THIS以更好地瞭解批量插入。現在針對你的問題,現在關注安全性非常好,如上所述

總是過濾輸入和轉義輸出,絕不信任數據。

您可以使用Codeigniter Security Class來保護您的數據。

$data=$this->security->xss_clean($this->input->post()); 

OR

$postData=$this->input->post(); 
$data=$this->security->xss_clean($postData); 

而且你可以避免跨站請求僞造通過在表單中​​使用CSRF token

0

謝謝您的回答,我不知道你的答案因爲我使用Ajax來獲取數據,數據是數組格式,這是我的代碼來處理控制器

if (!$this->input->is_ajax_request()) { 
     exit('No direct script access allowed'); 
    } else { 
     $input = $this->input->post('ar_dat'); 
     $option = $this->input->post('list_option'); 
     if ($option == null){ 
      $id_option = ''; 
     } else { 
      $id_option = implode(',',$option); 
     } 
     foreach ($input as $key) { 
      $data[] = array(
       'id_invoice' => $this->input->post('id_invoice'), 
       'id_product' => $this->input->post('id_product'), 
       'id_fabrics' => $this->input->post('id_fabric'), 
       'id_option'  => $id_option, 
       'name'   => $key['name'], 
       'number'  => $key['number'], 
       'id_size'  => $key['size'], 
       'comment'  => $key['comment']); 
     } 
     $this->orders->insert_order_uniform($data); 
    }