我运行的 Laravel 应用程序不是由我开发的,因为我不是开发人员。 这个 Laravel 应用程序显示了一个用户页面界面,我需要在其中放置自定义脚本实时聊天代码。
我找到了我需要放置代码并且补丁所在的相对刀片页面在哪里 应用程序/模块/知识库/资源/视图/布局/page.blade.php
我插入此文件的脚本永远无法工作。 我也无法访问位于 app/Modules/KnowledgeBase/Resources/view/layouts/ 的 test.html 文件,因为所有浏览器请求都被重定向到公共文件夹,因此浏览器将加载未找到的页面。
如果我将脚本放入此页面中,我会收到错误“将资源加载到内联的脚本被页面设置(“script-src”)阻止”
我问这个指令的设置位置以及如何修复以使我的脚本在 page.blade.php 中运行
我看到的唯一.htaccess文件放在app文件夹中,他的内容是
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !/\.well\-known/?.*
RewriteRule (.*) public/$1 [L]
</IfModule>
public目录下还有一个.htaccess文件,代码如下:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
我不明白为什么我看不到我的脚本代码加载到 page.blade.php
我希望能够在blade.php页面中运行脚本。 我在网上搜索解决方案,找到一些元标记添加到页面,但从未解决。
脚本已正确插入页面中,问题被一条指令锁定,我不知道可以将其放置在哪里以及如何更改以允许我的脚本。
在app/config中我发现了一个php文件,里面有:
'csp_enabled' => env('APP_CSP_ENABLED', true),
'csp_script_src' => env('APP_CSP_SCRIPT_SRC', ''),
也许这个指令禁止我的脚本? 如何解决?设置为 false 可以解决问题,但可能会产生 XSS 弱点。我如何允许我的脚本将此选项保留为 true?
您的网站上设置了内容安全策略。检查响应标头以查看其内容(在返回的标头中查找 Content-Security-Policy)。在元标记中添加 CSP 只是添加另一个策略,您的内容仍然需要通过现有策略。
现在您需要修改策略的内容或加载脚本的方式。如果策略允许“self”并且您可以从 .js 文件运行脚本而不是作为内联脚本,那么这将解决您的问题。如果您需要内联运行脚本,则需要修改 script-src 属性(或 script-src-elem,如果已实现)的策略。如果您的脚本没有更改,您可以添加某些浏览器在错误消息中提供的哈希值。如果您的脚本是动态的,您需要添加插入动态计算的哈希值或使用随机数。避免添加“不安全内联”,因为它会使您的 CSP 预防 XSS 的效果大大降低。