Php 从数据库中删除内容、安全预防措施

Php 从数据库中删除内容、安全预防措施,php,codeigniter,security,crud,Php,Codeigniter,Security,Crud,更新: 我添加了CSRF保护,就像Berdir告诉我的那样,在下面链接的帮助下,使我的应用程序再次工作。然而。。我不太确定我现在做了什么:D这将如何使我的应用程序更安全?我尤其感到困扰的是,我现在在ajax代码中得到了一个cookie值,因为我必须通过ajax调用传递它。。否则就不行了。这难道不会泄露一些关于饼干的重要信息吗?或者我只是有点偏执。谢谢 //旧的 嗨 在我正在构建的这个web应用程序中,我有一个功能可以添加关于某些主题的“提示和技巧”。这些页面只能由具有管理员角色的帐户添加。但是

更新:

我添加了CSRF保护,就像Berdir告诉我的那样,在下面链接的帮助下,使我的应用程序再次工作。然而。。我不太确定我现在做了什么:D这将如何使我的应用程序更安全?我尤其感到困扰的是,我现在在ajax代码中得到了一个cookie值,因为我必须通过ajax调用传递它。。否则就不行了。这难道不会泄露一些关于饼干的重要信息吗?或者我只是有点偏执。谢谢

//旧的 嗨

在我正在构建的这个web应用程序中,我有一个功能可以添加关于某些主题的“提示和技巧”。这些页面只能由具有管理员角色的帐户添加。但是,我也希望能够删除这些页面。(总是很方便,对)。因为我使用的是CodeIgniter,所以我想做一个控制器函数,它接受一个ID,并将该ID传递给模型,在该模型中,与该ID对应的页面将从数据库中删除

我想说清楚:

控制器:

public function del_content($id)
{
    $this->content_model->del_content($id)
}
型号:

public function del_content($id)
{
    // database code which I can't be bothered to look up now
    // something like $this->db->where(), $this->db->delete()
}
这一切都很简单,但我担心这可能太简单了。这对我来说不是很安全,是吗?由于可以从浏览器中的URL地址栏调用该函数,因此基本上可以通过该函数删除整个内容表。(因为你要做
http://mywebsite/controller/del_content/3
用于ID为3的项目)。当然,只有管理员帐户才能访问该功能,但

我以前从未编写过类似的程序,因此从未想过在这种情况下应该采取什么安全措施。有没有人能给我一些我应该留意的东西,也许还有一些想法和建议,如何让这更安全


非常感谢

您需要防范的是攻击。简单地说,它们是通过GET或POST请求欺骗管理员访问某个URL的攻击

实现这一点的典型方法是令牌。当生成指向删除操作的链接或表单时,您将生成一个发送给客户端的令牌(作为隐藏表单字段或作为GET URL的一部分),并将其存储在当前会话的服务器上。当执行该操作时,您将比较提交的令牌和存储的令牌,并且仅当它们匹配时才继续


许多框架/系统在某些方面都内置了这种功能,例如,Drupal中的表单API生成的所有表单都可以防止此类攻击。

谢谢。我想我用CI的CSRF配置修复了它,但是我仍然有一些问题。你介意查看我更新的帖子吗?我从来没有使用过CI,所以我无法回答CI特定的问题。与其编辑你的问题,我建议你打开一个新问题并链接到这个问题,因为你已经接受了我对这个问题的回答,你不会得到任何新的答案,因为那些能够回答的人不会访问它。