在Local Stoarge或会话存储中存储敏感数据是否安全? Localstorage允许对敏感数据进行任何攻击

时间:2016-09-07 09:53:03

标签: javascript angularjs security javascript-events asp.net-web-api2

在Web应用程序中,Html5中本地存储的安全性如何,或者是否有其他方法可以保护本地存储中的敏感数据。

项目结构:

前端:Html5,Angular js, Middletier: Asp.net webApi, BackEnd :Sql Server。

用户登录页面后,使用一些加密算法对该凭据进行加密。它将存储在db中。

之后,每个子项操作如产品列表,订单详细信息,书籍历史记录,添加产品都需要验证。

在页面后刷新时,数据会丢失,因此需要保留数据,因此我选择了localstorage。存储了使用某些js算法加密的用户名和密码,并存放在本地存储中。

我觉得它不安全,因为任何人都可以从浏览器工具中窃取数据。

在这种情况下是否有其他替代方法,否则这种方法是安全的。

任何人都可以帮助我处理。

1 个答案:

答案 0 :(得分:13)

每个Webapp Craftsman都必须知道:

防火墙之外没有可以完全安全的存储库。为什么?因为每个人都可以访问您需要允许应用程序操作数据的开门。

想象一下,您决定加密本地存储的内容。

这将阻止有权访问浏览器本地存储(例如开发人员工具)的人能够读取/写入数据。但您的应用程序将如何访问数据?您有两种选择:

  1. 在客户端应用中发送加密算法+密码。如果有人设法阅读您的应用程序代码并访问浏览器内存(例如开发人员工具),这将公开您的所有数据
  2. 将每个数据从客户端发送到服务器以在那里解密。嗯......这没有意义。最好将数据存储在服务器中。
  3. 你可以尝试尽可能多的东西,你需要一扇敞开的门,任何人都可以使用这扇敞开的门。

    但我有一个问题要问:你真的需要一个完全安全的客户端存储库吗?这种存储库不是为了完全安全而创建的,但它们足够安全!

    例如,您的网络应用程序的会话cookie是否由浏览器存储?如果有人窃取了该cookie,它可以冒充用户,您的应用程序将永远不会注意到它,对吧?当你想到它时,这是非常可怕的。

    如今,没有人会对此深思熟虑,因为浏览器足以保护cookie免受恶意访问。当然,他们也这样做是为了保护本地本地/会话存储,IndexedDB,WebSQL等。

    因此,如果您的数据比您的用户会话更珍贵,请将其保留在服务器中。如果没有,请继续将其放入浏览器中。

    PRO TIP:在无安全存储库中存储时考虑加密,以使其更难获取。但请记住,这是有代价的:您将无法使用这些存储库的查询系统来搜索加密数据。