这个codeigniter活动记录查询安全吗?
我只在我的ci站点的管理端使用此代码,此db insert安全吗这个codeigniter活动记录查询安全吗?,codeigniter,Codeigniter,我只在我的ci站点的管理端使用此代码,此db insert安全吗 function addCategory(){ $data = array( 'name'=> $_POST['name'], 'shortdesc'=>$_POST['shortdesc'], 'longdesc' => $_POST['longdesc'], 'status'=>$_POST['status'], 'parentid' => $_PO
function addCategory(){
$data = array(
'name'=> $_POST['name'],
'shortdesc'=>$_POST['shortdesc'],
'longdesc' => $_POST['longdesc'],
'status'=>$_POST['status'],
'parentid' => $_POST['parentid']
);
$this->db->insert('categories', $data);
}
代码点火器将为您正确地逃逸这些值。也就是说,您应该使用input类来获取您的post数据;如果您在配置文件中设置了vs XSS,它不仅可以自动保护vs XSS,而且如果这些值中的任何一个未设置,您都不会得到警告:
$name = $this->input->post('name');
$data = array(
'name' => $name,
... etc ...
);
也可以将函数调用直接放入数组中:
$data = array(
'name' => $this->input->post('name'),
... etc ...
);
或者,如果要在POST值不存在时设置默认值:
// php 5.3+
$data = array(
'name' => $this->input->post('name') ?: 'default'
);
// older
$data = array(
'name' => $this->input->post('name') ? $this->input->post('name') : 'default'
);
代码点火器将为您正确地逃逸这些值。也就是说,您应该使用input类来获取您的post数据;如果您在配置文件中设置了vs XSS,它不仅可以自动保护vs XSS,而且如果这些值中的任何一个未设置,您都不会得到警告:
$name = $this->input->post('name');
$data = array(
'name' => $name,
... etc ...
);
也可以将函数调用直接放入数组中:
$data = array(
'name' => $this->input->post('name'),
... etc ...
);
或者,如果要在POST值不存在时设置默认值:
// php 5.3+
$data = array(
'name' => $this->input->post('name') ?: 'default'
);
// older
$data = array(
'name' => $this->input->post('name') ? $this->input->post('name') : 'default'
);
我建议这样做
$data = array();
foreach($_POST as $key => value)
{
if ( $this->input->post($key) ) // if a value is set
{
$data[$key] = $this->input->post($key, true); //protect against xss
}
}
$this->db->insert('catagories', $data);
这样,如果您指定的任何静态值未设置,它们不会作为
false
添加到数据插入中(如果未设置它们,$This->input->post()
将返回什么)我建议这样处理
$data = array();
foreach($_POST as $key => value)
{
if ( $this->input->post($key) ) // if a value is set
{
$data[$key] = $this->input->post($key, true); //protect against xss
}
}
$this->db->insert('catagories', $data);
这样,如果您指定的任何静态值未设置,它们不会作为
false
添加到数据插入中(如果未设置它们,则返回什么$This->input->post()
)这些输入方法不会自动防止XSS,如果您在配置中启用它,它们会这样做,这就是为什么我写了“如果您这样设置”,例如,$config['global\xss\u filtering']=TRUE代码>哈,你可能想澄清一下,因为“如果你这样设置”可能意味着这篇文章失去控制的任何东西。要点是“是的,CI为您转义这些值”不,我只是想清楚,如果您想要全局xss筛选,您必须在配置文件中设置该选项。我不希望OP或使用此答案的任何其他人认为他们正在进行过滤,而默认情况下他们没有。这些输入方法不会自动防止xss,如果您在配置中启用它,他们会这样做,这就是为什么我写了“如果您这样设置”,例如,$config['global\u xss\u filtering']=TRUE代码>哈,你可能想澄清一下,因为“如果你这样设置”可能意味着这篇文章失去控制的任何东西。要点是“是的,CI为您转义这些值”不,我只是想清楚,如果您想要全局xss筛选,您必须在配置文件中设置该选项。我不希望OP或其他使用此答案的人认为他们正在进行过滤,而默认情况下他们没有。