【问题标题】:How do I stop users Accessing my files in production in Codeignighter如何阻止用户在 Codeigniter 中访问我的生产文件
【发布时间】:2019-08-29 00:02:57
【问题描述】:

我不希望用户在浏览器中看到 API 数据如何阻止他们访问此类文件

我一直在研究,但不确定我是否清楚搜索:)

<?php
  defined('BASEPATH') OR exit('No direct script access allowed');
  header('Access-Control-Allow-Origin: *');
class Api extends CI_Controller{
            public function __construct()
    {
        parent::__construct();

        $this->load->model('Api_model');
    }
   public function getFeed(){

     $result = $this->Api_model->getFeed();

     echo json_encode($result);
    }
}

【问题讨论】:

  • 对 API 通信使用简单的身份验证应该可以解决这个问题。
  • 你能给我举个例子吗,比如我会在哪里把代码放在我的代码中? @prasanna puttaswamy
  • 您可以确保只有授权的人才能查看数据。从浏览器的网络捕获中隐藏数据非常困难
  • @prasannaputtaswamy 谢谢

标签: codeigniter


【解决方案1】:

在了解 API 的概念之前,您需要了解基本身份验证。

首先,在任何基于用户/角色的应用程序中,您的用户将登录并根据他们的角色或身份验证级别限制他们的访问。 创建 API 不会改变这个基本问题。您不一定要对不显示敏感数据的公共 API 强制执行身份验证。例如(显示最新美元兑英镑转换的终点)。即使有这样的请求限制,也是基于类似的系统实现的。

其次,如果没有深入的安全知识,我不建议您从头开始创建自己的 API。

您可以查看专门为 CI 创建的这个库: https://github.com/chriskacerguis/codeigniter-restserver

虽然我也建议您查看与框架无关的库,它们为您提供相同的功能等等。

最后的选择是为用户提供 JWTokens 作为身份验证手段,但就像我说的那样,需要了解更多关于安全的知识才能安全有效地实施。

祝你好运。

如果你真的想保持你正在做的事情,你会做这样的事情:

<?php
  defined('BASEPATH') OR exit('No direct script access allowed');
  header('Access-Control-Allow-Origin: *');

  class Api extends CI_Controller{
            public function __construct()
    {
        parent::__construct();
        // ADDING AUTHENTICATION TO THE CONSTRUCTOR MEANS IT WILL RUN BEFORE ANY OTHER FUNCTION IS EXECUTED WITHIN THE CONTROLLER.
        userAuthenticate();     

        $this->load->model('Api_model');
    }

   public function getFeed(){
      $result = $this->Api_model->getFeed();
      echo json_encode($result);
    }
}

【讨论】:

  • 谢谢!我会调查你给我的东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-10
  • 2011-01-28
  • 2018-05-22
  • 2015-07-06
  • 2011-09-14
相关资源
最近更新 更多