kkl*_*per 5 html pdf iframe google-chrome
我有一个网页,其中iframe
包含带有属性的外国页面的链接target="_blank" rel="noopener"
。此链接在页面本身和 中都可以正常工作,iframe
但仅当通过带有选项的上下文菜单调用时才有效open in new tab
。常规单击会打开一个新选项卡并显示正确的结果,URL
但结果为This page has been blocked by Opera ERR_BLOCKED_BY_CLIENT
.
我四处寻找帮助,禁用了所有插件都无济于事,并以隐身模式播放了该场景,没有任何变化。错误页面上的控制台显示VM589:1460 crbug/1173575, non-JS module files deprecated.
此提示让我一无所知。我操纵属性target="_blank" rel="noopener" rel="noreferrer"
没有rel="noopener noreferrer"
成功。这全部适用于Opera
.
我尝试了Brave
相同的结果和错误消息,当然,除了Brave
而不是Opera
。Edge
加入失败带。那么看到This page has been blocked by Chrome
正确的也不足为奇。
此错误适用于PDF
来自 的所有文件链接iframe
,正常的外部链接可以正常工作。在新选项卡中Firefox
短暂显示,然后正常工作。PDF.js viewer
我没有机会尝试链接YouTube
或类似的内容,但我想有足够的证据表明我在chrome
PDF
渲染引擎中遇到了错误。
该怎么办?谁对此错误感兴趣以及如何接触他们?或者我可以在我的代码中做些什么?
浏览器使用内容安全策略 (CSP) 的时间已经较长,以保护用户免受不良内容的侵害。不需要的内容的定义可以由网站所有者进行。如果网站所有者没有这样做,则会使用一些限制性更强的标准值。
网站https://content-security-policy.com/是这样解释的
什么是内容安全策略?Content-Security-Policy 是现代浏览器用来增强文档(或网页)安全性的 HTTP 响应标头的名称。Content-Security-Policy 标头允许您限制浏览器加载资源(例如 JavaScript、CSS 或几乎任何内容)的方式。
虽然它主要用作 HTTP 响应标头,但您也可以通过元标记应用它。
术语内容安全策略通常缩写为 CSP。
内容安全策略可以帮助缓解哪些类型的攻击?CSP 最初旨在减少跨站脚本 (XSS) 攻击的攻击面,该规范的后续版本还可以防止其他形式的攻击,例如点击劫持。
在您的情况下,您必须为用户配置两个障碍:
本质上,允许大多数带有“self”的元素是相对安全的,但禁止网站上根本不使用的元素总是好的。
您的内容安全策略应与此类似,并且应允许 iframe 中的 PDF:
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'self' blob:; style-src 'self'; frame-src 'self';
Run Code Online (Sandbox Code Playgroud)
最好是在服务器配置中配置 CSP。但这对于每个网站所有者来说都是不可能的,并且也可以在元标记中配置 CSP。您可以将其添加到您网站的 head 标签内:
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'self' blob:; style-src 'self'; frame-src 'self'">
Run Code Online (Sandbox Code Playgroud)
不过,在服务器配置中设置 CSP 是更强大的方法:
https ://content-security-policy.com/examples/meta/
以下是更多示例,包括 Apache Web Server 和 Nginx Webserver 的 CSP 相关服务器配置:
https://content-security-policy.com/examples/
编辑
如果 PDF 托管在另一个域上,则 CSP 必须进行不同的、更开放的调整。此处解释了不同来源的选项: https:
//content-security-policy.com/#source_list
*.example.com
或带有“nonce-rAnd0m”的随机数。因此,即使 PDF 是外部的,也不意味着所有内容都可以以某种方式注入到网站中。
假设您使用带有域的选项,*.example.com
它看起来像这样或类似于:
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src '*.example.com' blob:; style-src 'self'; frame-src '*.example.com'
Run Code Online (Sandbox Code Playgroud)
假设您使用带有随机数的选项,它看起来像这样或类似于:
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'nonce-rAnd0m' blob:; style-src 'self'; frame-src 'nonce-rAnd0m'
Run Code Online (Sandbox Code Playgroud)
我没有测试过,所以可能需要稍微调整。
归档时间: |
|
查看次数: |
9811 次 |
最近记录: |