防止 Web 应用程序在域白名单之外发出 HTTP 请求 [重复]

Posted

技术标签:

【中文标题】防止 Web 应用程序在域白名单之外发出 HTTP 请求 [重复]【英文标题】:Prevent a web application from making HTTP requests outside a domain whitelist [duplicate] 【发布时间】:2020-08-31 08:16:49 【问题描述】:

我为浏览器/网络客户端设想了一个有用的安全功能,但我无法找到有关该主题的任何资源或讨论,所以我想要一个答案来评估这样的功能是否可以/应该/确实存在。

问题:是否可以根据允许域的白名单限制 Web 客户端能够向哪些域发出 HTTP 请求?

理由:

前端网络开发人员倾向于使用第三方库。它更容易、更快、更易于维护,并且通常有助于提高产品质量。这些库中的许多都是开源且有信誉的,但审计所有第三方依赖项非常困难,使用它们意味着一些风险评估和一定程度的合理信任。可以想象,外部库可能包含恶意代码。

例如,假设我正在开发一个接受信用卡详细信息的应用程序。在整个应用程序中,我使用的是第三方 UI/样式框架。在我不知情的情况下,事实证明第三方库包含恶意 javascript,旨在窃取信用卡号并将其发布到外部站点。这似乎是 Web 应用程序中常见的恶意代码模式,因为为了在 Web 应用程序之外产生一些恶意影响,必须对某些外部资源(应用程序域服务器或邪恶的第三方服务器)执行操作.

在这个例子中,如果可以将应用程序域永久列入白名单(这样第三方网站以后就不能被恶意代码列入白名单),那么恶意代码就不可能窃取信用卡将号码发送到第三方网站。作为浏览器安全功能,这可能看起来像 (1) 在任何 JavaScript 之前加载的 html 属性,(2) 允许定义白名单但不允许稍后定义限制较少的白名单的 JavaScript 接口。

显然,这并不能防止恶意代码可能采取的所有邪恶行为,但它确实消除了大部分问题。大多数邪恶(但很有用)的行为都需要网络请求(窃取敏感数据、发送开采的比特币、不需要的分析等)。事实上,我包含的前端依赖项可能正在发出外部 HTTP 请求,而我可能不知道。

这样的计划是否已经存在?这种功能会有帮助还是有问题?

【问题讨论】:

en.m.wikipedia.org/wiki/Content-Security-Policy? CSP connect-src developer.mozilla.org/en-US/docs/Web/HTTP/Headers/… w3c.github.io/webappsec-csp/#directive-connect-src 看起来connect-src 正是我想要的,并且这已通过内容安全策略解决。 【参考方案1】:

您正在寻找Content Security Policy。

一个简单的限制(仅)脚本,因此它们只能从与 HTML 文档相同的来源加载,如下所示 HTTP 响应标头:

Content-Security-Policy: default-src *; script-src 'self'

【讨论】:

如果我理解正确,这会阻止从其他域加载文件。但这并不能阻止已经加载的 JavaScript 向其他域发出网络请求,这是我的问题的主题。 @MattH - 只有文件,没有别的。加载文件和发出网络请求是一回事(嗯,除了来自硬盘的本地文件)

以上是关于防止 Web 应用程序在域白名单之外发出 HTTP 请求 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Vimeo PHP-SDK 获取私有视频(域白名单)[关闭]

如何防止 Web 浏览器对缓存文件发出“If-Modified-Since”请求?

AWS EC2 / Elastic Beanstalk |如何按域列入白名单?

在 Django 中根据端点设置不同的 CORS 规则

防止不受信任的 C# 代码启动新线程或黑名单/白名单 API

Charles——charles 工具栏Tools总结—— 黑名单