问题描述
我正在开发一个禁用退格键的 chrome 扩展程序;它在谷歌文档中不起作用。 https://github.com/tuminzee/disable-backspace
manifest.json
"name": "disable Backspace","version": "0.1","manifest_version": 3,"description": "A chrome extension which disables backspace key","icons": {
"128" : "icon128.png","48" : "icon48.png","16" : "icon16.png"
},"content_scripts": [
{
"matches": [
"*://*/*"
],"js": [
"main.js"
]
}
],"permissions": [
"input"
]
}
main.js
document.addEventListener("keydown",function(event) {
console.log(event);
if(event.which == 8 || event.keyCode == 8 || event.code == "Backspace" ){
event.preventDefault();
}
});
警告
The page delivered both an 'x-frame-options' header and a 'Content-Security-Policy' header with a 'frame-ancestors' directive. Although the 'x-frame-options' header alone would have blocked embedding,it has been ignored
如果您有任何与此相关的资源,请分享。 提前致谢。
解决方法
该页面同时提供了“X-Frame-Options”标头和带有“frame-ancestors”指令的“Content-Security-Policy”标头。尽管单独的“X-Frame-Options”标头会阻止嵌入,但它已被忽略
这只是一个警告,javascript没有被阻止。X-Frame-Options
和 Content-Security-Policy: frame-ancestors ...
HTTP 标头执行相同的操作 - 阻止嵌入未列入白名单的 iframe。
但最后一个更灵活,所以 X-Frame-Options
obsoletes 支持 Content-Security-Policy: frame-ancestors ...
如果两者都存在。因此出现此警告。 contacts.google.com
为浏览器向后兼容性发布了两个标头。
由于 contacts.google.com
负责这些标头,因此您无能为力。直接忽略它。
在研究 contacts.google.com
时,我发现它发布了另一个 CSP 标头 - Content-Security-Policy: require-trusted-types-for 'script';
:
请检查开发工具中的网络选项卡,您是否观察到响应来自 contacts.google.com
的此 HTTP 标头。
此标头强制使用 Trusted Types API 访问 contacts.google.com
页面上的一些 XSS DOM 易受攻击的接收器。
如测试所示,addEventListener()
是 not block,但可信类型可能会阻止插入扩展脚本本身。