单页应用程序安全性

时间:2015-09-14 09:22:03

标签: php ajax angularjs rest

我正在使用前端的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(或安全令牌等)?

1 个答案:

答案 0 :(得分:0)

您需要做的就是向用户公开登录和注册的API。对于任何其他api访问,首先需要验证用户是否已登录/活动。

对于身份验证,您可以在会话中存储用户凭据: 现在,用户凭证将在每次请求时发送到api,您将能够在处理请求之前进行身份验证。

您应该同时加密会话中保存的用户凭据,这样任何人都无法从浏览器控制台中读取该凭据。