Codeigniter URI路由和安全性

时间:2015-07-17 03:30:03

标签: php jquery html codeigniter rest

在codeigniter或restful结构中,页面可以通过URI路由到

例如,如果我想查看id:1的项目列表,那么我只需要创建一个这样的路径:

domain.com/item/view/1

在控制器中

function view() {
   $id = $this->uri->segment(3);
   //database get data and return view...
} 

这应该是实现restful结构的标准方法。但是,当在成员系统中,并且项目ID依赖于用户时,我该如何保护链接?

这样其他用户就不能强行尝试不同的ID并读取其他成员项。

一种方法是比较每个函数中的user_id和item_id。但是如果系统很大,这意味着我需要在每个函数中进行比较,那就是大量的编码和检查。

有没有更智能的方法来减少开销/编码?

谢谢

2 个答案:

答案 0 :(得分:2)

无法保护网址。有人可以简单地更改URL中的数字并获取不同的数据。如果ID是敏感的,您不希望通过URL传递信息。

一种选择是加密在URL中传递的ID(例如:29可以加密,因此它显示为' S84jG483dJd')。

也可以使用代码点火器会话库或甚至闪存数据(为一个请求存储)传递ID。这样,如果ID是敏感的,那么任何人改变它们的可能性都会很小(在CI中启用会话cookie加密以获得更高的安全性)。

但是,如果信息是敏感信息,我将始终在获取数据库并向用户显示之前进行检查。为您的用户编写最糟糕的意图始终是一个好习惯!

答案 1 :(得分:1)

domain.com/item/view/1中,始终代表base_url/controller/Method

所以如果你创建控制器(item),那么函数(view)。

class Item extends CI_Controller
{
    public function  __construct()
    {
        parent::__construct();

    }

    public function view($id)
    {
        //so in $id it will assign the 3rd value to it.
        $new_id = $id;
        echo $new_id;
    }