【问题标题】:Codeigniter securely delete db entriesCodeigniter 安全地删除数据库条目
【发布时间】:2011-06-05 16:54:50
【问题描述】:

使用 Codeigniter 删除数据库表中的行最安全的方法是什么?

我正在使用以下方法。

HTML:检索用户提交的链接(链接标题、网址和描述)。将Remove 链接添加到每个条目。该链接有第三个段,它是来自数据库的条目 id,link_id

<ul id="user_links">
    <?php foreach($query as $row): ?>

    <li><?php echo $row->link_title; ?></li>
    <li><?php echo auto_link($row->link_url, 'url', TRUE); ?></li>
    <li><?php echo $row->link_description; ?></li>
    <?php echo anchor('profile/remove_link/'.$row->link_id, 'Remove', 'title="Remove link"'); ?>

    <?php endforeach; ?>
</ul>

控制器:

    function remove_link()
    {
               $link_id = $this->uri->segment(3);
               $seg = 'user_links'; //used in model for redirecting back to page
               $this->load->model('Link_model');
               $this->Profile_model->link_delete($link_id, $seg);
    }

型号:

function link_delete($link_id, $seg)
{
    $this->db->where('user_id', $this->tank_auth->get_user_id());
    $this->db->where('link_id', $link_id);
    $this->db->delete('user_links'); 
    redirect("/profile/$seg/");         
}

这可行,但我担心通过 URI 段删除条目是不安全的。我的代码安全吗?否则你有什么建议?

【问题讨论】:

  • 我前段时间问了一个类似的问题:stackoverflow.com/questions/5930870/…也许对你有帮助。
  • 嗨@cabaret。谢谢链接。我不知道 CSRF 攻击。经过研究,我发现在 Codeigniter v 2.0.0 中添加了 CSRF 保护,所以我不会担心。
  • 在配置中设置csrf_protection TRUE

标签: php mysql database codeigniter


【解决方案1】:

您可以使用带有 CSRF 保护的表单助手和 POST 请求来代替 url 方法:http://codeigniter.com/user_guide/libraries/security.html 或带有链接的方法,但将一些代码添加到: 1 清理 uri 段, 2 添加cabaret链接中描述的token

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多