【问题标题】:How do I force a Codeigniter route to return a 404如何强制 Codeigniter 路由返回 404
【发布时间】:2016-02-24 04:54:32
【问题描述】:

基本上,我试图让网站的管理部分更难找到。我有一个像这样构建的控制器

class Admin extends MY_Controller{ // actions below

我喜欢控制器的名称为 Admin,因为它告诉任何可能在该网站上工作的未来开发人员该控制器包含网站的管理部分。

但是;作为额外的安全层,我不希望通过简单地在浏览器中键入 www.theDomain.com/admin 即可访问管理部分。我更希望任何以“admin”开头的路由都返回我的标准 404 响应。

我希望这可以在路由文件中实现,例如

$route['admin'] = 'error/404';

我什至会接受能够在我的控制器的构造函数中执行此操作。有人想吗?

【问题讨论】:

  • 确保您没有依赖攻击者无法猜测您的管理员 URL 作为您的安全。混淆!=安全。假设攻击者知道 URL,从而实现您的安全性。
  • 你用的是什么版本的词?
  • @heikkila 这不是我使用的唯一安全性。这是网站安全性的附加层。
  • @wolfgang1983 我正在使用 3.0.3

标签: php codeigniter http-status-code-404 url-routing


【解决方案1】:

也许你可以在你的控制器方法中调用show_404()

【讨论】:

  • 我怎么知道这个网址是给 /admin 而不是我想允许的网址
  • 您可以加载 URL 帮助程序,执行 $current = current_url(); 并检查是否找到 /admin。如果有,请致电show_404()
  • 我猜要么你不知道,要么 codeigniter 没有这个,但是有没有办法只获取路径,或者甚至更好地将路径作为字符串数组,其中每个子文件夹是数组中的一个条目?
  • 这不是这个特定问题的答案。他要求让管理面板更安全。
【解决方案2】:

您可以为管理控制器使用不同的类名,例如“Admin48957”。在这种情况下,只有知道该类名的人才能通过键入 www.theDomain.com/admin48957 访问管理部分。 (这是许多现代 CMS 的策略。即 prestashop)

如果你强制返回404。那么你自己也无法访问。

但是如果你还想返回 404,你可以使用 show_404() CodeIgniter 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 2013-07-27
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多