在 Javascript 客户端中隐藏基本身份验证凭据

Hide basic auth credentials in Javascript client

我需要从我的客户端 javascript 编码一个 ajax 请求 post 使用 jQuery 将一些数据发送到后端 jQuery。

$.ajax({...});

Javascript 代码可以被各种客户端嵌入,所以我在我的后端启用了 CORS 并且请求正常。 后端受 Basic Auth 保护,身份验证 header 存储在 javascript 客户端中。

如何保护我的后端,以便只有我的客户可以 post 数据并防止任何其他人这样做。

您不能在 JavaScript 中存储机密。如果至少用户无法访问它们(F12 调试工具),您就无法保留用户名和密码。即使要使用 JavaScript encryption,您仍然需要将密钥存储在客户端的某个位置,以便它很容易被发现。

即使您信任该用户,XSS 攻击也可能会将此用户名和密码信息泄露给攻击者。

这就是 OAuth 2.0 在 implicit grant 中使用短期访问令牌来处理 public 客户端的原因。