如何保护我的 Web API 基本身份验证凭据



我刚刚开始在我的 Web API 中实现身份验证。我想从基本身份验证开始

了解到我必须在每个请求中传递用户名和密码。
所以,假设我正在执行一些管理任务并像这样进行 API 调用:

 $.ajax({
          url: host + "homework/delete/" + $(this).data("id"),
          type: 'DELETE',
          headers:
                    {
                        Authorization: 'Basic ' + btoa(username + ':' + password)
                    },
          success: function (d) {
                   $tr.remove();
          },
          error: function () {
                 alert("Error please try again");
          }
  });

因此,尽管我的用户名/密码在变量中,但它们的值必须在页面(源(中。 无论谁访问该页面,都可以看到这些凭据。
这意味着,无论谁知道该页面的网址,都可以看到凭据。

如果我放置了一个登录页面,我应该如何在管理页面上检查此用户是否已通过身份验证。我应该使用饼干吗?如果用户通过登录页面进行设置?

为了增强安全性,我认为应该有另一种方法。首先,您需要使用用户名和密码对服务进行身份验证,并接收生存期有限的身份验证令牌,然后应使用此令牌访问服务。

我认为你必须选择另一种方法:

  1. 使用 UI(PHP、Java 等(创建服务器端应用程序
  2. 此应用程序具有会话管理
  3. 凭据存储在服务器端应用程序的配置中
  4. 对受基本身份验证保护的服务的请求由服务器应用执行。响应将传递给客户端

如果要创建客户端 JavaScript 应用程序,则无法隐藏凭据。您的方法的另一个问题可能是:受保护的服务是否支持 CORS(跨源资源共享(?

最新更新