我可以通过html中的Content-Security-Policy
限制对不同资源的访问。但是,为了浏览file://
,似乎允许文件在文件系统中的任何位置。
我尝试使用
<meta http-equiv="Content-Security-Policy" content="default-src 'none'">
当我使用file://path/to/myfile.html
加载它并使用<a href="file:///var/log/system.log">System</a>
时,我可以单击并查看系统日志的内容。
我的问题:是否可以将资源加载或导航仅限制于子文件夹而不是限制file://
url的文件系统上的所有内容?
我尝试使用Google Chrome版本71.0.3578.98 (Official Build) (64-bit)
MacOS 10.12.6。
编辑:在Apache Cordova 8.1.2上提供以下真实案例:
使用cordova create HelloWorld
创建新项目。然后编辑HelloWorld/www/index.html
并添加<div><a href="file:///etc/hosts">System</a></div>
。
然后执行cordova platform add android
和cordova run android
。点击System
链接,即使我将CSP更改为/etc/hosts
(至少在我的无根手机上),也可以查看<meta http-equiv="Content-Security-Policy" content="default-src 'none'">
。
答案 0 :(得分:2)
由于您尚未托管您的页面,因此该页面可以在 href 中使用,但是一旦将其托管在某个位置,您网站的实际网址将以 http开头:或 https:,而不是 file:。 然后使用CSP,默认情况下它将阻止文件系统。
当您打开本地创建的html时,浏览器只是将其读取为文件。检查chrome中的开发人员选项,然后查看“网络”标签,您将在下面看到以下内容:
尝试托管您的网站,然后如果CSP限制了源,您将看到状态代码 403 或类似代码。
希望这可以消除您的疑问。