在Web应用程序中,Html5中本地存储的安全性如何,或者是否有其他方法可以保护本地存储中的敏感数据。
项目结构:
前端:Html5,Angular js, Middletier: Asp.net webApi, BackEnd :Sql Server。
用户登录页面后,使用一些加密算法对该凭据进行加密。它将存储在db中。
之后,每个子项操作如产品列表,订单详细信息,书籍历史记录,添加产品都需要验证。
在页面后刷新时,数据会丢失,因此需要保留数据,因此我选择了localstorage。存储了使用某些js算法加密的用户名和密码,并存放在本地存储中。
我觉得它不安全,因为任何人都可以从浏览器工具中窃取数据。
在这种情况下是否有其他替代方法,否则这种方法是安全的。
任何人都可以帮助我处理。
答案 0 :(得分:13)
每个Webapp Craftsman都必须知道:
防火墙之外没有可以完全安全的存储库。为什么?因为每个人都可以访问您需要允许应用程序操作数据的开门。
想象一下,您决定加密本地存储的内容。
这将阻止有权访问浏览器本地存储(例如开发人员工具)的人能够读取/写入数据。但您的应用程序将如何访问数据?您有两种选择:
你可以尝试尽可能多的东西,你需要一扇敞开的门,任何人都可以使用这扇敞开的门。
但我有一个问题要问:你真的需要一个完全安全的客户端存储库吗?这种存储库不是为了完全安全而创建的,但它们足够安全!
例如,您的网络应用程序的会话cookie是否由浏览器存储?如果有人窃取了该cookie,它可以冒充用户,您的应用程序将永远不会注意到它,对吧?当你想到它时,这是非常可怕的。
如今,没有人会对此深思熟虑,因为浏览器足以保护cookie免受恶意访问。当然,他们也这样做是为了保护本地本地/会话存储,IndexedDB,WebSQL等。
因此,如果您的数据比您的用户会话更珍贵,请将其保留在服务器中。如果没有,请继续将其放入浏览器中。
PRO TIP:在无安全存储库中存储时考虑加密,以使其更难获取。但请记住,这是有代价的:您将无法使用这些存储库的查询系统来搜索加密数据。