Laravel,如何在刀片页面添加脚本?将资源加载到内联的脚本被页面设置(“script-src”)阻止

问题描述 投票:0回答:1

我运行的 Laravel 应用程序不是由我开发的,因为我不是开发人员。 这个 Laravel 应用程序显示了一个用户页面界面,我需要在其中放置自定义脚本实时聊天代码。

我找到了我需要放置代码并且补丁所在的相对刀片页面在哪里 应用程序/模块/知识库/资源/视图/布局/page.blade.php

  1. app 是安装应用程序的文件夹,位于所有核心文件中。
  2. 此应用程序文件夹内的所有请求都通过 htaccess 文件重定向到公共文件夹,公共文件夹位于应用程序文件夹内,因此 app/public/
  3. 公用文件夹中有很多文件和文件夹。其中一个文件夹是一个称为模块的符号链接文件夹,该文件夹内有所有作为符号链接链接的模块。
  4. 我单击符号链接知识库
  5. 在这里,我可以放置一个测试 HTML 文件,其中还包含可以运行的实时聊天脚本。这只是一个测试,看看我是否能够从浏览器到达我所在的位置并检查聊天脚本是否有效。
  6. 此文件夹中仅存在两个文件夹。我需要单击按钮来加载父目录,当我这样做时,我位于以下补丁中:app/Modules/KnowledgeBase/
  7. 现在我打开资源、视图、布局文件夹,然后到达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?

laravel content-security-policy script-src
1个回答
0
投票

您的网站上设置了内容安全策略。检查响应标头以查看其内容(在返回的标头中查找 Content-Security-Policy)。在元标记中添加 CSP 只是添加另一个策略,您的内容仍然需要通过现有策略。

现在您需要修改策略的内容或加载脚本的方式。如果策略允许“self”并且您可以从 .js 文件运行脚本而不是作为内联脚本,那么这将解决您的问题。如果您需要内联运行脚本,则需要修改 script-src 属性(或 script-src-elem,如果已实现)的策略。如果您的脚本没有更改,您可以添加某些浏览器在错误消息中提供的哈希值。如果您的脚本是动态的,您需要添加插入动态计算的哈希值或使用随机数。避免添加“不安全内联”,因为它会使您的 CSP 预防 XSS 的效果大大降低。

© www.soinside.com 2019 - 2024. All rights reserved.