AJAX POST请求隐藏基本身份验证凭据

3

我一直在研究如何向我的API发送AJAX POST请求,并尝试理解如何正确传递基本的身份验证凭据。

          Interface                    API

https://www.example.com/app/ -------> https://api.example.com/

根据 StackOverflow 上的一个例子,我在 JS 的源代码中看到了明文的用户名和密码,如果这样的话,别人不就可以访问我的 API 吗?那么,我如何才能传递我的用户名和密码,而不让它暴露在公众视野中呢?
$.ajax({  
    url: 'yoururl',
    username : username,
    password :password,
    type: 'POST',
    contentType: 'application/x-www-form-urlencoded',
    dataType: "text",
    xhrFields: 
    {
        withCredentials: true
    },
    beforeSend: function (xhr) { 
        xhr.setRequestHeader('Authorization', 'Basic ' + btoa(username + ":" + password));             
    }
});
1个回答

3
是的,如果你在JavaScript中硬编码你的用户名和密码,整个世界都能看到并使用它们。
保护Web API不应该使用基本认证。如我在这个答案中所描述的那样,有几种替代方案。我的首选是OAuth2。从JavaScript客户端使用它时,你需要查看隐式流程,这是专门针对不受信任的客户端的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接