我只想加载来 self 的站点、youtube 和 addthis 的脚本,不允许加载其他脚本。这是我的 crossdomain.xml
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="my website url"/>
<allow-access-from domain="www.youtube.com"/>
<allow-access-from domain="ct1.addthis.com"/>
</cross-domain-policy>
谁能告诉我哪里出了问题,或者如何验证我的网站是否使用了 crossdomain.xml 文件?
亲切的问候, 哈利
编辑:
<IfModule mod_headers.c>
Header set X-Content-Security-Policy: "allow 'self'; options inline-script; img-src 'self' data:"
<FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svgz?|ttf|vcf|webapp|webm|webp|woff|xml|xpi)$">
Header unset Content-Security-Policy
</FilesMatch>
</IfModule>
我在哪里添加 https://www.youtube.com
以允许播放我的嵌入式视频?这是堆栈跟踪,但我怀疑它是否有用。
Error in event handler for (unknown): Blocked a frame with origin "https://www.youtube.com" from accessing a cross-origin frame.
Stack trace: Error: Blocked a frame with origin "https://www.youtube.com" from accessing a cross-origin frame.
at Error (native)
at setupffoverrides (chrome-extension://hdokiejnpimakedhajhdlcegeplioahd/onloadwff.js:151:86)
at checkgenpwfillforms (chrome-extension://hdokiejnpimakedhajhdlcegeplioahd/onloadwff.js:152:33)
at receiveBG (chrome-extension://hdokiejnpimakedhajhdlcegeplioahd/onloadwff.js:130:210)
at Function.target.(anonymous function) (extensions::SafeBuiltins:19:14)
at EventImpl.dispatchToListener (extensions::event_bindings:395:22)
at Function.target.(anonymous function) (extensions::SafeBuiltins:19:14)
at Event.publicClass.(anonymous function) [as dispatchToListener] (extensions::utils:65:26)
at EventImpl.dispatch_ (extensions::event_bindings:378:35)
at EventImpl.dispatch (extensions::event_bindings:401:17)
编辑 2:
我已将其更改为以下内容,但我仍然得到相同的跟踪。
Header set X-Content-Security-Policy: "allow 'self' https://www.youtube.com; options inline-script; img-src 'self' data:"
最佳答案
如果你想防止加载指定脚本之外的脚本,你需要一个 Content Security Policy ,而不是 crossdomain.xml
文件。
CSP 可以帮助防止 XSS攻击,因为只允许执行授权内容。因此,如果恶意用户将某些脚本注入(inject)页面,如果您的策略未指定 unsafe inline
,则脚本将不会执行。
编辑后更新
如果你需要YouTube跨域访问你的站点,那么你需要实现CORS .这实质上是页面中 Access-Control-Allow-Origin
header 的输出,以允许其他域绕过 Same Origin Policy并访问您的内容客户端。
关于apache - 跨域策略允许 Youtube,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24034900/