【问题标题】:How to restrict the user from editing an URL parameter如何限制用户编辑 URL 参数
【发布时间】:2011-07-07 23:28:42
【问题描述】:

我正在使用 CodeIgniter。当用户编辑 URL 参数时,我得到一个数据库错误。

我该如何解决这个问题?在 CodeIgniter 中,我在 URL 中传递值 32

http://xyz.com/esebd2/user/link/link_detail/32

如果用户按如下所示进行编辑,

http://xyz.com/esebd2/user/link/link_detail/323434

我收到一个数据库错误。怎么办?

function link_detail()

    {

        $this->common_head();
        $lid = $this->uri->segment(4);
        $link_data['link_detail'] = $this->linklist->get_detail_link($lid);
            //above line to retrive value from database
        $this->load->view('user/detaillink_view', $link_data);
        $this->common_footer();

    }

【问题讨论】:

  • 您可能希望至少做一些简单形式的错误处理。解析 URL 参数的代码是什么样的?
  • 像32一样被传递给函数link_detail
  • 捕获这些错误而不是输出它们怎么样?
  • 我可以想象得到。显示这个link_detail 函数的代码!基本上,您应该在尝试加载它之前检查 ID(从 URL 传递的参数)是否确实存在于您的数据库中,或者捕获任何数据库错误。
  • 数据库查询在哪里执行?

标签: php codeigniter url-parameters


【解决方案1】:

您无法阻止用户编辑 URL。您只能阻止他/她在未经授权的情况下访问资源。

至于错误消息:任何用户输入都应被视为不可信,并且应始终在使用前进行验证。即使您不希望普通用户更改它。

并且如果发生错误,不要输出系统的错误信息。这些仅适用于开发人员,而不是用户,因为它们可能包含敏感信息。

【讨论】:

    【解决方案2】:

    你没有。而且您也不能限制在客户端的 POST 表单上传递的值。 检查必须在服务器端完成,并且必须能够处理所有可能的值。

    【讨论】:

      猜你喜欢
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 2013-07-28
      • 1970-01-01
      • 1970-01-01
      • 2017-07-05
      • 2012-07-09
      • 1970-01-01
      相关资源
      最近更新 更多