允许前端确定服务器传送的 Javascript 有问题吗?

Issues with allowing the frontend to determine which Javascript is delivered by server?

现状

我的公司有大量不同的环境,部署前端代码以针对 working/live 数据进行测试并不总是那么容易。我们使用扩展来交换从服务器发送的某些脚本和本地可用的脚本。这主要有效,但有一些限制。

渴望

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

问题

我想在我现在的公司实施类似的东西,但我很好奇它的安全隐患。

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

如果提供的包 包含敏感信息,它们可能值得重构 - 最好仅在后端验证用户身份后才提供敏感信息被授权接收它,而不是将它提供给碰巧通过前端包管理器请求包的任何人。

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

如果您唯一想实施的是

if a value in local storage was marked "true" it would place script tags pointing to localhost. If it was false, it would go to the server instead.

那么这完全没问题 - 最糟糕的客户端可以通过篡改来做到 运行 他们自己的 JavaScript(他们已经可以做到)。

如果这是为了让开发人员更容易测试实时站点,更好的方法可能是将实时生产环境与开发环境完全分开——设置一个具有虚拟数据和更少限制的开发服务器开发人员可以与之交互,而客户只能看到生产服务器(现在可能不再受益于前端脚本管理器)。