我正在使用前端的angularjs(JavaScript)和后端的php rest api进行单页面Webapp(SPA)。
我做了很多ajax调用服务器,例如提交一个新故事。那里出现了安全问题。服务器需要识别请求。由于它是SPA,因此只有一个客户端(前端)应该具有执行此请求的权限。
我一直在谷歌上几天找到识别客户端的方法。我看到我可以在ajax调用的头部发送一个clientid,但这不安全,因为前端是在JS中,并且所有JS代码都可以被用户看到。
示例:
$http.post("some/url", somedata, {
headers: {
"ClientId":"someidforthisclient"
}
});
黑客可以查看JS代码并复制ClientId
。有了这个,他可以进行ajax调用,服务器会认为这个请求是有效的。
所以我的问题是:
如何识别服务器中的客户端,但保证用户无法看到ClientId(或安全令牌等)?
答案 0 :(得分:0)
您需要做的就是向用户公开登录和注册的API。对于任何其他api访问,首先需要验证用户是否已登录/活动。
对于身份验证,您可以在会话中存储用户凭据: 现在,用户凭证将在每次请求时发送到api,您将能够在处理请求之前进行身份验证。
您应该同时加密会话中保存的用户凭据,这样任何人都无法从浏览器控制台中读取该凭据。