这个 codeigniter 活动记录查询安全吗?

发布于 2024-11-05 20:24:07 字数 356 浏览 0 评论 0原文

我仅在我的 ci 网站的管理端使用此代码,此数据库插入安全吗?

function addCategory(){
    $data = array(
    'name'=> $_POST['name'],
    'shortdesc'=>$_POST['shortdesc'],
    'longdesc' => $_POST['longdesc'],
    'status'=>$_POST['status'],
    'parentid' => $_POST['parentid']

    );
    $this->db->insert('categories', $data);
}

I am using this code for admin side only for my ci site, is this db insert safe ?

function addCategory(){
    $data = array(
    'name'=> $_POST['name'],
    'shortdesc'=>$_POST['shortdesc'],
    'longdesc' => $_POST['longdesc'],
    'status'=>$_POST['status'],
    'parentid' => $_POST['parentid']

    );
    $this->db->insert('categories', $data);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

长安忆 2024-11-12 20:24:07

Code Igniter 会为您正确转义这些值。话虽如此,您应该使用输入类来获取发布数据;如果您在配置文件中这样设置,它不仅可以自动保护 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'
);

Code Igniter will properly escape those values for you. That being said, you should use the input class to get your post data; not only can it automatically protect vs XSS if you've set it that way in your config file, if any of those values are unset you won't get warnings spewing out:

$name = $this->input->post('name');

$data = array(
    'name' => $name,
    ... etc ...
);

You can also put the function call directly in your array:

$data = array(
    'name' => $this->input->post('name'),
    ... etc ...
);

Or if you want to set default values when the POST value is not there:

// php 5.3+
$data = array(
    'name' => $this->input->post('name') ?: 'default'
);

// older
$data = array(
    'name' => $this->input->post('name') ? $this->input->post('name') : 'default'
);
乙白 2024-11-12 20:24:07

我建议以这种方式解决这个问题

$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() 如果未设置则返回)

I would recommend tackling it this way

$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);

This way if any of those static values you specified are not set, they don't get added to the data insert as false (what $this->input->post() returns if they are not set)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文