我可以依靠CodeIgniter URI来检查登录吗


Can I rely on a CodeIgniter URI to check for a login?

假设我有url http://localhost/home,这是页面的标准url。

当用户登录时,他们被重定向到http://localhost/admin/home

这个没有任何路由的URL实际上更像http://localhost/admin/panel/index/home

在admin是一个文件夹的情况下,面板是一个控制器,索引是一个函数,主页是一个扩展以提供视图。

理论上,我可以根据rsegment(2)是否等于"admin"来检查用户是否登录吗?或者用户可以以某种方式伪造url以破坏系统。

注意:面板控制器(位于管理文件夹内)的索引功能中有一个实际的登录检查,我想知道用户是否能够欺骗系统不运行索引功能,或者是否安全。

否,您不能依赖URI来检查用户是否已登录。您必须使用像TankAuth或IonAuth这样的身份验证库。

此外,如果您需要更多选项,可以访问"我应该如何为CodeIgniter选择身份验证库?"?。

我建议您阅读Phil Sturgeon关于CI基类的文章。类继承是维护谁可以访问控制器,谁不能访问控制器的关键。URL本身不包含任何类型的检查,但您知道它调用了一个控制器。基本前提是:

如果您创建了一个名为MY_Admin_controller的控制器,并且您的所有管理控制器都从中继承,并且您在MY_Admin-controller中执行管理检查,那么您可以保持系统干燥(不要重复自己),因为您不必检查该用户是否应该访问每个控制器。只有一次,控制器将继承该检查。

或者用户可以以某种方式伪造url以破坏系统。[?]

当然,URL是可以发送到服务器的最简单的部分,你只需要一个带有地址栏的浏览器——现在我写的时候,每个浏览器都有;)

什么?

您的路由将指向一个控制器,如果该控制器不安全,则对公共访问开放。