UPDATE:
我像 Berdir 告诉我的那样添加了 CSRF 保护,并在下面的链接的帮助下使我的应用程序再次运行。但是..我不太确定我现在做了什么:D 这将如何使我的应用程序更安全?我特别担心的是,我现在在我的 ajax 代码中获取了一个 cookie 值,因为我必须通过我的 ajax 调用传递它..否则它就不起作用。这不是泄露了有关 cookie 的一些重要信息吗?或者我只是偏执。谢谢!
http://aymsystems.com/ajax-csrf-protection-codeigniter-20 http://aymsystems.com/ajax-csrf-protection-codeigniter-20
//老的
你好。
在我正在构建的这个网络应用程序中,我有一个功能可以添加有关某些主题的“提示和技巧”。这些页面只能由具有管理员角色的帐户添加。但是,我还希望能够删除这些页面。 (总是方便,对)。由于我使用的是 CodeIgniter,所以我正在考虑创建一个控制器函数,该函数接受一个 ID,并将该 ID 传递给模型,在该模型中,与该 ID 对应的页面将从数据库中删除。
只是为了明确这一点:
控制器:
public function del_content($id)
{
$this->content_model->del_content($id)
}
Model:
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()
}
这一切都非常简单,但我担心它可能是too简单的。这对我来说似乎不太安全,是吗?由于您可以从浏览器中的 URL 地址栏调用该函数,因此您基本上可以通过它删除整个内容表。 (因为你会做http://mywebsite/controller/del_content/3
对于 ID 为 3 的项目。当然,只有管理员帐户才能访问该功能,但仍然..
我以前从未编写过类似的程序,因此从未考虑过在这种情况下我应该采取的安全措施。有人可以给我一些我应该注意的事情,也许还有一些关于如何使其更安全的想法、建议吗?
多谢!
您需要防范的是CSRF http://en.wikipedia.org/wiki/Cross-site_request_forgery攻击。简而言之,它们是诱骗管理员通过 GET 或 POST 请求访问某个 URL 的攻击。
典型的方法是使用代币。生成指向删除操作的链接或表单时,您会生成一个发送到客户端的令牌(作为隐藏表单字段或作为 GET URL 的一部分),还将其存储在服务器上以用于当前会话以及何时该操作执行后,您将比较提交的令牌和存储的令牌,只有在它们匹配时才继续。
许多框架/系统都以某种方式内置了这种功能,例如,使用 Drupal 中的 Form API 生成的所有表单都可以防止此类攻击。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)