AngularJS:从firebug和用户会话中隐藏ajax数据

时间:2012-07-30 16:16:11

标签: php mysql angularjs

我正在使用AngularJS创建一个站点,该站点允许用户在站点上创建帐户并无缝登录,无需重新加载页面。要创建这样的网站,我使用AngularJS路由加载不同的部分和$ http以通过xhr访问php脚本。如前所述,我使用php进行服务器端脚本编写,我使用mysql存储数据。

我的问题是没有页面重新加载通过$ http服务提交给服务器的数据将显示在firebug(或等效工具)的网络选项卡中。这意味着在页面关闭之前,可以通过这些工具公开密码等私人数据。现在我想找到一种方法来阻止用户在任何工具中查看这些数据。我可以加密数据客户端。问题是脚本仍然暴露。有没有其他人认为这是一个问题,并找到任何解决方法?

我需要考虑的另一件事是以角度存储用户会话的最佳方式是什么?是否最好使用PHP的会话并使用$ http或使用cookie获取它的状态?这两种方法都存在与安全性相关的问题。对于cookie,我需要加密内容,并使用会话变量通过ajax来回传递数据,它可以使用firebug访问所有内容。所以我想再次了解人们对此的看法。

1 个答案:

答案 0 :(得分:2)

对于密码可见性问题,您可以使用密码哈希客户端。 javascript代码是可见的,但这不会造成问题。散列函数是单向的,因此无法根据散列结果检索密码。 javascript可以对salt进行硬编码,因为它不是秘密(https://stackoverflow.com/a/536756)。

可选地,您可以在将其与数据库值进行比较之前在服务器端实现第二个哈希。但是,这只会在您有漏洞导致密码值读取的情况下提供保护,但同一漏洞不允许数据库更新。

对于其他数据,您可以考虑diffie-hellman密钥交换。

要确保正在执行客户端的javascript确实是您提供的脚本,您需要https。它还可以保护您的频道,但不会影响您的浏览器或萤火虫(Is this correct? Should firebug see SSL-protected AJAX?)。

我正在实现与angularjs和php类似的东西,但决定不使用客户端散列或diffie-hellman密钥交换。您要保护自己的方案很难实现。入侵者需要在登录前后访问您的浏览器。