允许前端确定服务器交付哪个Javascript的问题



当前情况

我的公司有很多不同的环境,在这些环境中,部署前端代码来测试工作/实时数据并不总是那么容易。我们使用扩展来交换从服务器发送的某些脚本与本地可用的脚本。这基本上有效,但也有一些局限性。

欲望

几年前,我在另一家公司工作,该公司允许我们在浏览器控制台中运行一个与扩展相同的命令。我当时没有考虑它是如何实现的,但我相信这与基本上有一个小的javascript包有关,该包首先发送到浏览器,确定应该交付哪个包,以及本地存储中的值是否标记为";真";它将放置指向localhost的脚本标记。如果它是假的,它将转到服务器。

问题

我想在我目前的公司实现这样的东西,但我很好奇它的安全含义

只要提供的JavaScript包不包含任何敏感信息,就应该没问题。

如果提供的包确实包含敏感信息,那么它们可能值得重构——最好是在后端验证用户有权接收敏感信息后才提供敏感信息,而不是通过前端包管理器向碰巧请求包的任何人提供。

在考虑安全性时,一个好的经验法则是,假设客户端可以读取客户端JavaScript,并根据需要修改和执行它。因此,任何验证步骤都应该在服务器上完成,而不是在客户端上。

如果你唯一想实现的是

如果本地存储器中的值被标记为";真";它将放置指向localhost的脚本标记。如果它是假的,它将转到服务器。

那么这就很好了——客户端篡改它所能做的最糟糕的事情就是运行他们自己的JavaScript(他们已经可以这么做了(。

如果这是为了让开发人员更容易测试现场,那么更好的方法可能是将现场生产环境与开发环境完全分离——建立一个具有虚拟数据和更少限制的开发服务器,供开发人员使用,而客户端只能看到生产服务器(现在可能不再受益于前端脚本管理器(。

最新更新