【发布时间】:2020-08-31 08:16:49
【问题描述】:
我为浏览器/网络客户端设想了一个有用的安全功能,但我无法找到有关该主题的任何资源或讨论,所以我想要一个答案来评估这样的功能是否可以/应该/确实存在。
问题:是否可以根据允许域的白名单限制 Web 客户端能够向哪些域发出 HTTP 请求?
理由:
前端网络开发人员倾向于使用第三方库。它更容易、更快、更易于维护,并且通常有助于提高产品质量。这些库中的许多都是开源且有信誉的,但审计所有第三方依赖项非常困难,使用它们意味着一些风险评估和一定程度的合理信任。可以想象,外部库可能包含恶意代码。
例如,假设我正在开发一个接受信用卡详细信息的应用程序。在整个应用程序中,我使用的是第三方 UI/样式框架。在我不知情的情况下,事实证明第三方库包含恶意 JavaScript,旨在窃取信用卡号并将其发布到外部站点。这似乎是 Web 应用程序中常见的恶意代码模式,因为为了在 Web 应用程序之外产生一些恶意影响,必须对某些外部资源(应用程序域服务器或邪恶的第三方服务器)执行操作.
在这个例子中,如果可以将应用程序域永久列入白名单(这样第三方网站以后就不能被恶意代码列入白名单),那么恶意代码就不可能窃取信用卡将号码发送到第三方网站。作为浏览器安全功能,这可能看起来像 (1) 在任何 JavaScript 之前加载的 HTML 属性,(2) 允许定义白名单但不允许稍后定义限制较少的白名单的 JavaScript 接口。
显然,这并不能防止恶意代码可能采取的所有邪恶行为,但它确实消除了大部分问题。大多数邪恶(但很有用)的行为都需要网络请求(窃取敏感数据、发送开采的比特币、不需要的分析等)。事实上,我包含的前端依赖项可能正在发出外部 HTTP 请求,而我可能不知道。
这样的计划是否已经存在?这种功能会有帮助还是有问题?
【问题讨论】:
-
看起来
connect-src正是我想要的,并且这已通过内容安全策略解决。
标签: javascript html npm websecurity