iT邦幫忙

0

PHP Codeigniter SQL-injection 的方法

大大们,我有一个function 想让大家为我解答
function updatethis(){
$updateArray = $_POST['op'];
$listing = 1;
foreach ($updateArray as $recordIDValue) {
$update_data = array(
'position' => $listingCounter
);
$this->model->update2('table', 'id', $recordIDValue, $updatedata);

$listing = $listing + 1;
}
}

function update2($table_name, $field_name, $field_id, $update_data, $field_name2 = NULL, $field_id2 = NULL)
{
$this->db->where($field_name, $field_id);

        if (!empty($field_name2))
            $this->db->where($field_name2, $field_id2);

        
        
        if ($this->db->update($table_name, $update_data)) {
            return TRUE;
        } else {
            return FALSE;
        }

}

$POST['op'][] 是个 array
好像
op[]: 1
op[]: 3
op[]: 5
op[]: 6
op[]: 8
op[]: 2
op[]: 12

请问上面的sql injection有什么办法阻止吗? 还是array要如何预防 sql injection?

如果是CI3,兩種方式:
1. config.php的 $config['global_xss_filtering'] = TRUE;
2. 當 $config['global_xss_filtering'] = false,就可個別設定 $this->input->post('op', TRUE);

看一下說明:
https://codeigniter.com/userguide3/libraries/input.html

2 個回答

0
Franky Chen
iT邦研究生 4 級 ‧ 2020-10-27 21:05:07

我記得如果你有用CI的Query builder 是會自動防SQL injection的,不用自己處理

mylim95 iT邦新手 5 級 ‧ 2020-10-28 10:57:28 檢舉

上网验证了也是那样,可是测试的成绩这些都中了,能不能我证明用来Query Builder 能防iNJECTION 不然我也不知道要换什么query了

0
賽門甜不辣
iT邦研究生 3 級 ‧ 2020-10-28 09:25:57

如果是CI3,兩種方式:

  1. config.php的 $config['global_xss_filtering'] = TRUE;
  2. 當 $config['global_xss_filtering'] = false,就可個別設定 $this->input->post('op', TRUE);

看一下說明:
https://codeigniter.com/userguide3/libraries/input.html

mylim95 iT邦新手 5 級 ‧ 2020-10-28 10:39:21 檢舉

/*
|--------------------------------------------------------------------------

Global XSS Filtering

|
| Determines whether the XSS filter is always active when GET, POST or
| COOKIE data is encountered
|
| WARNING: This feature is DEPRECATED and currently available only
| for backwards compatibility purposes!
|
*/
我看到这说明说已经淘汰了,请问有影响吗?

他還是有效~
如果不用內建的,其實用其他的像是 http://htmlpurifier.org/ 也是可以

我要發表回答

立即登入回答