使用 javascript 时如何保护本地 API URL

How to secure a local API URL, when using javascript

我正在寻找最好的方法来保护我的应用程序登录 api 免受试图劫持它的第三方的侵害。我正在使用 Apigility、ZF2、Jquery.

我有一个游戏服务器(服务器G)和一个云服务器(服务器C)。

当服务器 C - 保存用户名和密码时,用户通过服务器 G 注册和登录。

服务器 C 和 G 都有自己的 API 使用 ApiGility。

当用户登录到服务器 G 时,jquery 应用程序调用自己的 API,后者又使用 Oauth2 联系服务器 C 以验证输入的凭据。这样,我网络中的每个游戏都有一个到我的云的 Bearer 令牌连接,并且每个游戏都处理自己与其客户端(移动/浏览器/桌面等)的连接。保持清洁。

虽然服务器 G 到 C 是安全的,但我如何确保 javascript 对其自身 API 的调用安全?

javascript 公开了本地应用程序 api 调用,这实际上意味着任何人都可以抓住 url 并使用它:)

 var url ='http://server-g.example.com/api/login/' + email + '/' + password;

 $.ajax({
     type:  'GET',
     async: true,
     url:   url,
     dataType: "json",
     success: function(responseObject){
         if (responseObject.status)
         {
             //Do stuff    
         } else {
             //Do other stuff
         }
     }
 });

我一直在考虑使用隐式授权,但是,我不确定这将如何与我自己的 api 一起使用?

标准解是什么?

您应该永远不要 像那样在url 中发送密码和电子邮件。

我想知道您使用 Apigility 中的哪些文档来设置此身份验证。

您应该在 POST 请求中发送用户名和密码,并使用正确设置的 https 连接。发送的数据将使用证书加密,这样可以防止数据在被拦截时被读取。

阅读有关如何在 Apigility here 中使用 OAuth 的更多信息,尤其是在:

Public 客户

示例显示:

POST /oauth HTTP/1.1
Accept: application/json
Content-Type: application/json

{
    "grant_type": "password",
    "username": "testuser",
    "password": "testpass",
    "client_id": "testclient2"
}