更新:
我添加了CSRF保护,就像Berdir告诉我的那样,在下面的链接的帮助下,使我的应用程序再次工作。但是..。我不太清楚我现在做了什么:D这将如何使我的应用更加安全?我尤其感到烦恼的是,我现在在ajax代码中获得了一个cookie值,因为我必须通过ajax调用传递它。否则就不起作用了。这不是给出了一些关于饼干的重要信息吗?还是我只是偏执狂。谢谢!
http://aymsystems.com/ajax-csrf-protection-codeigniter-20
//老嗨。
在我正在构建的这个网络应用程序中,我有一个功能,可以添加关于某些主题的“提示和技巧”。这些页面只能由具有管理角色的帐户添加。但是,我也想要删除这些页面的能力。(总是很方便,对)。由于我使用的是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地址栏调用该函数,因此基本上可以通过它删除整个内容表。(因为您将对ID为3的项执行http://mywebsite/controller/del_content/3
)。当然,只有管理员帐户才能访问该函数,但仍然..。
我从来没有编制过这样的程序,因此我从来没有考虑过在这种情况下我应该采取什么安全措施。有人愿意给我一些我应该留心的东西吗?也许还有一些想法,建议,如何使这件事更安全?
非常感谢!
发布于 2011-05-09 00:11:37
您需要防范的是CSRF攻击。简单地说,它们是通过GET或POST请求欺骗管理员访问某个URL的攻击。
这样做的典型方法是令牌。生成指向delete操作的链接或表单时,生成发送到客户端的令牌(作为隐藏表单字段或GET URL的一部分),还将其存储在当前会话的服务器上,在执行该操作时,您将比较已提交的令牌和存储的令牌,并仅在它们匹配时继续。
在某些方面,许多框架/系统都有这种内置,例如,Drupal中的Form API生成的所有表单都是针对此类攻击而生成的。
https://stackoverflow.com/questions/5930870
复制相似问题