我有一个主控制器来处理我的验证系统的前端,它处理登录,注销,更新用户信息等功能,我希望通过POST来调用视图/表格。那么像“delete_user”函数呢?我的想法是某人管理面板上的一个按钮会显示“删除帐户”,它会发送到“/ auth/delete”,并且该功能会根据用户的会话用户名或ID删除用户。这似乎有点开放,你可以发送一个链接给某人,当他们在该应用程序中打开它时,它会删除他们的帐户。最好的办法是什么?控制器安全问题中的代码点火器验证码
0
A
回答
0
我处理这个问题的方式如下。在您的帐户页面上,您有一个删除帐户的链接。他们点击该页面并与另一页面打招呼,询问他们是否真的有把握,如果需要,请输入他们的密码以确认他们确定。
他们这样做后,我停用他们的帐户(不删除),并发送一封电子邮件说他们的帐户已被停用,如果这意图没有其他行动需要他们的一部分。如果没有打算他们可以登录到他们的帐户,它会重新激活它。 (48小时内)48小时后,我删除了他们的帐户和信息。
1
你所关心的实际上叫做Cross Site Request Forgery或XSRF。你可以在OWASP Website上阅读更多关于它的内容。
几件事情,你应该做的解决这个问题 -
- 使用POST进行删除操作。这并不能保护您免受XSRF的侵害,但可以保护您免受链接追随者/页面加速器的侵害。它也是http最佳实践。
- 将您的会话标识符发布在请求的正文中。在服务器端,比较来自cookie和来自请求的会话标识符 - 如果它们不同,则拒绝该请求。这是防止XSRF的“double submit cookie”方法。
- 或者,您可以要求用户解决验证码。
此外,汤姆提到的“软删除”也是一个好主意。
1
这听起来像添加一些其他信息的功能是答案。这里是有问题的功能:
function delete() {
$id = $this->session->userdata('user_id');
$this->auth->delete_user($id);
redirect('home');
}
在代码点火器这可以通过访问site.com/class/delete这是我的问题访问。我认为一个好的计划将发布一个认证令牌与删除按钮(保存在cookie中),所以也无法通过URL采取行动:
function delete() {
if($this->input->post("token") == $this->session->userdata('token')) {
$id = $this->session->userdata('user_id');
$this->auth->delete_user($id);
}
redirect('home');
}
我不认为我需要一个软现在删除,但谢谢你的提示!如果你看到任何其他问题请解释,谢谢。
0
看一看较知名的认证库之一笨:
https://github.com/benedmunds/CodeIgniter-Ion-Auth
如果你不决定只使用它,你至少可以得到关于如何去一些好的想法关于创建自己的
相关问题
- 1. 错误代码点火器验证
- 2. 代码点火器的Twitter GET问题
- 3. 代码点火控制器网页
- 4. 代码点火器路由问题
- 5. 代码点火器子目录问题
- 6. 问题路由代码点火器
- 7. 无法访问默认控制器代码点火器
- 8. Clonefish验证与代码点火器验证
- 9. 代码点火器中的自定义控制器类名称
- 10. 代码点火器中的跳跃控制器
- 11. 代码点火器服务器端验证的AJAX形式
- 12. 代码点火器
- 13. 验证控制器问题
- 14. PHP代码嗅探器验证问题
- 15. 问题与JQuery getJSON检索控制器数据(代码点火器)
- 16. 从代码点火器中从控制器下载excel文件
- 17. 代码点火器:放入单独的控制器或一个?
- 18. 代码点火器控制器/型号名称冲突
- 19. 重构控制器在代码点火器
- 20. 代码点火器从视图到控制器获取ajax值
- 21. 带插入功能的代码点火器安全
- 22. PrestaShop验证器:SQL安全问题
- 23. PHP SDK +代码点火器
- 24. 代码点火器路由
- 25. 代码点火器::包括?
- 26. 代码点火器路由
- 27. 代码点火器分页
- 28. 在代码点火器
- 29. 代码点火器关系
- 30. 代码点火器框架