我正在构建的应用程序使用AJAX连接到REST Web服务。此服务不是API密钥,而是要求将纯文本用户名和密码作为POST数据与身份验证请求一起传输。除了设计不佳之外,用户/通行证组合与用于访问与服务相关联的网站的凭证相同,使得它们特别敏感。该服务确实使用SSL,但用户/通行证仍然以纯文本形式显示在JavaScript源代码中。由于最明显的答案是“不使用具有如此明显的安全漏洞的服务”#34;对我来说不是一个选项,有没有聪明的解决方案来保护用户名和密码?
此应用程序频繁请求API使用实时数据,所以我试图避免在我自己的服务器上使用代理,这基本上会增加我的开销。这让我希望有某种客户端解决方案。
我将部署缩小的代码,这将限制可读性,但这很容易被逆转,并且它不会混淆纯文本值,所以我希望有更强大的东西。
我正在使用jQuery,我的请求非常典型。
$.ajax({
type: "POST",
url: "https://my.insecurewebservice.com/api/",
data: JSON.stringify({
"username": "me@mymail.com",
"password": "plaintextpassword"
}),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(response, status, request) {
// perform the usual work here
}
});
答案 0 :(得分:2)
在这种API模型中无法保护此类数据。在某些时候,浏览器中的JS需要使用这些凭据进行AJAX调用,无论你在那之前做了什么(缩小,加密等),都必须撤消它才能传输密码到服务器。这是默默无闻的安全,而且根本不是安全。
您的选择是:
根据声音,代理选项是您最好的选择。这并不全是坏事,因为您可以在该层中进行一些缓存或其他优化。