【问题标题】:How to secure a local API URL, when using javascript使用 javascript 时如何保护本地 API URL
【发布时间】:2015-05-19 16:56:26
【问题描述】:

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

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

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

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

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

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

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 一起使用?

标准溶液是什么?

【问题讨论】:

    标签: javascript jquery zend-framework2 oauth-2.0 laminas-api-tools


    【解决方案1】:

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

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

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

    详细了解如何在 Apigility here 中使用 OAuth,尤其是在:

    公众客户

    例子说明:

    POST /oauth HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    
    {
        "grant_type": "password",
        "username": "testuser",
        "password": "testpass",
        "client_id": "testclient2"
    }
    

    【讨论】:

    • @Alex,你能说得更具体点吗?还有docs on how to use http basic in Apigility。绝对不是像上面的问题那样做。
    • 谢谢威尔特,这解决了我的问题。除了使用 GET 来检查和 POST 来更新之外,我并没有考虑过。
    猜你喜欢
    • 2012-07-13
    • 1970-01-01
    • 2020-08-19
    • 2014-08-27
    • 2021-08-13
    • 2021-11-13
    • 2020-08-04
    • 2019-11-12
    • 2018-01-04
    相关资源
    最近更新 更多