【问题标题】:How to secure localStorage in HTML5?如何保护 HTML5 中的 localStorage?
【发布时间】:2021-11-08 02:52:41
【问题描述】:

我们如何保护 HTML5 localStorage 的内容不被用户篡改?对于 cookie,我们以加密格式存储信息,用于加密的秘密将存储在客户端不知道的服务器中。

但是,在 localStorage 中,信息驻留在客户端,我们将密钥发送给客户端。那么,是否有任何标准方法可以保护 localStorage 中的信息不被用户篡改?

【问题讨论】:

    标签: security html local-storage


    【解决方案1】:

    @Mikko Ohtamaa 是对的。使用起来不太安全。但也许您可以使用 sessionStorage 将信息保存到会话结束。从这个site:

    关于本地存储和安全性的最终想法

    1. 不要将本地存储用于会话标识符。 坚持使用 cookie 并使用 HTTPOnly 和 Secure 标志。

    2. 如果 cookie 由于某种原因无法工作,请使用会话存储 当用户关闭浏览器窗口时,它将被清除。

    3. 在本地存储中存储敏感数据时要小心。 就像任何其他客户端存储选项一样,此数据可以是 由用户查看和修改。

    最后一件事是不要将敏感数据存储在本地存储中......

    【讨论】:

      【解决方案2】:

      您没有保护 localStorage。

      来自客户端软件的任何内容都必须是不受信任的。

      【讨论】:

        【解决方案3】:

        对于仍有疑问的人,请查看 SecurityJS.128,它是一个客户端 JavaScript 库,其中一个 API 是 window secureStorage


        这就是它的工作原理:

        (async function() {
            // anonymous function
            // generate the key
            const myKey = securityjs.generateKey();
            // set the item
            secureStorage.setItem("item", "123");
        
            // lock it
            secureStorage.lock();
        
            // unlock it
            secureStorage.unlock(myKey);
            // get the item
            secureStorage.getItem("item");
            // "123"
        })();
        

        【讨论】:

        • 很棒的发现!但是在客户端可以使用密钥并且用户可以使用密钥来篡改数据的核心问题仍然存在。不使用本地存储来存储敏感信息的原始建议仍然有效。
        • 这是一个很好的建议,因为通过 Internet 发送的数据(如 localStorage)很容易被其他人看到,并且是一个很大的安全问题。如果您要将用户信息存储在 localStorage 中,那么我推荐 SecurityJS,因为它会禁用从 localStorage 或 sessionStorage 中查看或编辑数据。如果您正在运行像 Node.js 这样的服务器,您可以将信息存储在数据库或变量中,但不要将其显示在页面上。
        猜你喜欢
        • 2019-12-31
        • 1970-01-01
        • 2013-12-28
        • 2018-01-19
        • 2013-06-10
        • 2013-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多