我有一个小网站,可以显示来自不同广告网络的广告。有时这些广告网络提供的广告包含向外部服务器发出HTTP请求的js代码,我发现有时这些请求侵犯了我的用户的隐私。
有没有办法阻止js对其他服务器的请求?(即使我失去了该广告的潜在收入或被禁止进入广告网络(
页面可以通过网络响应上的HTTP标头或页面内的<meta>
标记使用内容安全策略(CSP(。CSP用于控制页面可以与哪些外部源进行通信。
CSP可以有许多不同的指令,这些指令控制不同类型的外部请求。您听起来对connect-src
指令特别感兴趣,该指令限制了脚本可以通过fetch
(以及类似的API(访问的来源。
请注意,脚本仍然可以通过向页面添加外部资源(例如<img>
、<object>
、<link>
等(来启动外部请求。如果要限制所有外部请求,可以使用default-src 'self'
将所有指令默认为与页面本身相同的来源。然后,如果需要,您可以添加更为宽松的其他特定指令。
例如,此策略阻止所有外来源请求和资源,但允许来自ads.example.com
(以及原始源(的帧、图像和脚本除外:
default-src 'self'; img-src 'self' https://ads.example.com; script-src 'self' https://ads.example.com; frame-src 'self' https://ads.example.com
由于未指定connect-src
,因此它受到default-src
的限制,不允许脚本与外部源进行通信。