对于浏览器/web客户端,我设想了一个有用的安全特性,但是我还没有找到任何关于这个主题的资源或讨论,所以我想要一个答案来评估这样的特性是否能够/应该/确实存在。
问题:是否可以根据允许域的白名单限制web客户端能够发出HTTP请求的域?
Justification:
前端web开发人员倾向于使用第三方库。它更容易、更快、更易于维护,而且常常有助于提高产品的质量。这些库中有许多是开源的和有信誉的,但是很难审计所有的第三方依赖关系,使用它们意味着一些风险评估和一定程度的合理信任。可以想象,外部库可能包含恶意代码。
例如,假设我正在开发一个接受信用卡详细信息的应用程序。在整个应用程序中,我使用的是第三方UI/样式框架。在我不知情的情况下,结果发现第三方库包含恶意JavaScript,其目的是窃取信用卡号码并将其邮寄到外部站点。这似乎是web应用程序中常见的恶意代码模式,因为为了在web应用程序之外执行一些恶意效果,必须对某些外部资源(应用程序域服务器或邪恶的第三方服务器)执行操作。
在本例中,如果可以永久地将应用程序域白名单(这样,第三方站点就不能稍后被恶意代码白名单),那么恶意代码就不可能通过将信用卡号码发送到第三方站点来窃取信用卡号码。作为浏览器安全特性,这可能类似于(1)在任何JavaScript之前加载的HTML属性,(2)允许定义白名单的JavaScript接口,但不允许稍后定义限制较小的白名单。
显然,这并不能防止恶意代码可能采取的所有恶意行为,但它确实消除了大量的担忧。大多数邪恶(但非常有价值)的行为都需要网络请求(窃取敏感数据、发送已开采的比特币、不想要的分析等等)。事实上,我包含的前端依赖项可能是发出外部HTTP请求,而我可能不知道。
这样的计划是否已经存在?这种功能是有用的还是有问题的?
发布于 2020-05-14 17:21:59
你在找一个内容安全策略。
一个限制(仅)脚本以便只能从与HTML文档相同的来源加载脚本的简单脚本看起来类似于这个HTTP响应头:
Content-Security-Policy: default-src *; script-src 'self'https://stackoverflow.com/questions/61803412
复制相似问题