【问题标题】:Code igniter authentication code in controller security question控制器安全问题中的代码点火器验证码
【发布时间】:2010-06-17 01:15:47
【问题描述】:

我有一个主控制器来处理我的身份验证系统的最前端,它处理登录、注销、更新用户信息等我预计通过 POST 从视图/表单调用的功能。但是像“delete_user”这样的功能呢?我的想法是某人管理面板中的一个按钮会说“删除帐户”,它会发布到“/auth/delete”,并且该功能会根据他们的会话用户名或ID删除用户。这似乎有点开放,您可以向某人发送一个链接,当他们在该应用程序中打开它时,它会删除他们的帐户。处理这个问题的最佳方法是什么?

【问题讨论】:

    标签: php security authentication codeigniter


    【解决方案1】:

    你关心的其实就是Cross Site Request Forgery,或者XSRF。您可以在OWASP Website 上阅读更多相关信息。

    你应该做的几件事来克服这个问题 -

    1. 使用 POST 进行删除操作。这并不能保护您免受 XSRF 的侵害,但可以保护您免受链接关注者/页面加速器的侵害。这也是一种 http 最佳做法。
    2. 请求正文中发布您的会话标识符。在服务器端,比较来自 cookie 和请求的会话标识符 - 如果它们不同,则拒绝请求。这是防止 XSRF 的“double submit cookie”方法。
    3. 或者,您可以要求用户解决验证码。

    此外,根据 Tom 提到的内容进行“软删除”也是一个好主意。

    【讨论】:

      【解决方案2】:

      听起来像在函数中添加一些其他信息就是答案。这是有问题的功能:

      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');   
          }
      

      我认为我现在不需要软删除,但感谢您的好提示!如果您发现任何其他问题,请解释,谢谢。

      【讨论】:

        【解决方案3】:

        我的处理方式如下。在您的帐户页面上,您有一个删除帐户的链接。他们单击该页面,然后会看到另一个页面,询问他们是否真的确定,如果是,请输入他们的密码以确认他们确定。

        在他们这样做之后,我会停用他们的帐户(而不是删除)并发送一封电子邮件,说他们的帐户已被停用,如果这是有意的,他们不需要采取其他行动。如果不是故意的,他们可以登录到他们的帐户,它会重新激活它。 (48 小时内)48 小时后我删除他们的帐户和信息。

        【讨论】:

          【解决方案4】:

          看看 CodeIgniter 的一个更知名的身份验证库:

          https://github.com/benedmunds/CodeIgniter-Ion-Auth

          如果您不决定只使用它,您至少可以获得一些关于如何创建自己的好主意

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-10-20
            • 1970-01-01
            • 2011-10-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多