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

mae*_*sto 0 javascript security api client basic-authentication

我需要从我的客户端 javascript 代码制作一个 ajax 请求,使用 jQuery 将一些数据发布到后端。

$.ajax({...});
Run Code Online (Sandbox Code Playgroud)

Javascript 代码可以被各种客户端嵌入,所以我CORS在我的后端启用并且请求正常。后端受 an 保护,Basic Auth并且 auth 标头存储在 javascript 客户端中。

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

Mvd*_*vdD 5

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

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

这就是 OAuth 2.0 在隐式授权中使用短期访问令牌来处理公共客户端的原因。