【问题标题】:REST API Request should be client side or server side? [closed]REST API 请求应该是客户端还是服务器端? [关闭]
【发布时间】:2015-06-23 00:22:19
【问题描述】:

举个例子:

有检查结果验证 API,还有另一个 Web 应用程序将该 API 用作服务。根据该api响应(如果成功)用户可以进入网站或不

要做到这一点,我的基础知识有问题,
我有两个选择(可能有很多:) 任何好的都可以接受! )

01). 使用跨域AJAX请求并根据响应调用API。向 Web 应用、服务器脚本发送另一个请求并创建会话

$.get("http://api.resultval.com/v1/",
   {index_no : no,subject : sub,grade : grade},function(response_msg){
       obj = JSON.parse(response_msg);
       if(obj.msg.valid){
       // results validated marked as validated result on user cv   
       }
   }
);

02). 不是向 API 发送 AJAX 请求,而是将用户插入的结果发送到服务器端,并使用服务器端脚本使用 guzzle 库调用 API

 $client = new \GuzzleHttp\Client();
            $response = $client->get('http://api.resultval.com/v1/'.Input::get('index_no').'/'.Input::get('subject').'/'.Input::get('grade'));
            if($response->json()['msg']==='verified'){
             // results validated marked as validated result on user cv   
            }

什么是最好的方法?安全性如何?我觉得第二个不错!但我还在想有一种方法可以在客户端做到这一点?

【问题讨论】:

  • 你说的是登录之类的东西吗?以便被调用的 API 决定用户是否可以访问或不依赖于传输的数据?
  • @KhorneHoly Yeh 这是我的问题!
  • @Tech-Sira 我更喜欢您的第二种解决方案。最好将你的 API 调用到服务器端,用户不需要知道你在调用一个 api,并且通过 AJAX,他们可以知道你的 API URL 和发送的数据(使用浏览器中的开发人员工具)。跨度>
  • 编辑了问题并添加了特定的库来完成任务!

标签: php ajax api rest curl


【解决方案1】:

我宁愿选择做这个服务器端,原因如下:

  1. JavaScript 可以被用户操作。由于试图达到安全漏洞的 JS 代码中的错误更改,Ajax 请求可能是有毒的。

  2. 在服务器端,您有更好的选项来记录某个用户发送的调用并根据来自 API 的结果执行操作。也许有一天你需要根据你得到的结果进行昂贵的操作。

  3. 用户知道的越少越好。您的用户不需要知道您正在调用哪些服务。至少他们必须不知道 API Urls 和您直接发送到 API 的数据(开发者工具或流量嗅探器可以做到这一点)

  4. 您无法保证可能的第三方 API 的安全性,但您可以保证自己的系统。如果用户有可能使用发送的数据以及用户可能尝试攻击此 API 的确切 URL 来跟踪您正在调用的 API。虽然您不知道 API 是否足够安全以抵御此类攻击,但您可以知道您的系统确实如此。如果发生攻击或安全漏洞,您还可以立即更新您的项目。你不能说这什么时候会在第三方项目中发生。我认为这是要考虑的最重要的一点之一!

【讨论】:

    【解决方案2】:

    考虑使用JWT 实现您的解决方案:

    JSON Web Token (JWT) 是一种紧凑的 URL 安全方式,用于表示要在两方之间传输的声明。 JWT 中的声明被编码为使用 JSON Web 签名 (JWS) 进行数字签名的 JSON 对象

    【讨论】:

      猜你喜欢
      • 2012-09-22
      • 2018-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多