Html 如何在ii2中为smartsupp聊天添加内容安全策略(CSP)?

Html 如何在ii2中为smartsupp聊天添加内容安全策略(CSP)?,html,yii2,content-security-policy,Html,Yii2,Content Security Policy,我使用的是Yii2小部件,它工作得很好,但无法在他们的网站上录制视频,他们建议添加一个称为CSP的东西 有人能建议在何处以及如何添加下面的代码吗 Content-Security-Policy: default-src 'self'; script-src 'self' https://*.smartlook.com https://*.smartlook.cloud 'nonce-randomlyGeneratedBase64Nonce' 'unsafe-eval'; connect-src

我使用的是Yii2小部件,它工作得很好,但无法在他们的网站上录制视频,他们建议添加一个称为CSP的东西

有人能建议在何处以及如何添加下面的代码吗

Content-Security-Policy: default-src 'self'; script-src 'self' https://*.smartlook.com https://*.smartlook.cloud 'nonce-randomlyGeneratedBase64Nonce' 'unsafe-eval'; connect-src 'self' https://*.smartlook.com https://*.smartlook.cloud; worker-src 'self' blob:

YII2框架用于配置内容安全策略和其他安全标头。这是首选的方式

或者,您可以在页面底部的示例中设置CSP。在这种情况下,管理CSP并使用nonce值令牌并不容易

您还可以在中设置CSP。在这种情况下,任何第三方脚本都可以窃取nonce值并使用它,因此这是最不可取的方法

但是,如果您不知道如何以及在何处设置CSP,在为Smartlook设置CSP规则后,您的网页很可能会停止正常运行。因为上述CSP规则仅涵盖Smartlook源代码,但您的网页有自己的脚本/样式/字体等。 因此,您需要将Smartlook CSP规则和您自己的网页CSP规则合并为一个

最好的方法是首先只设置内容安全策略报告:默认src的self。。。在报告模式下,检查开发工具中的浏览器控制台错误或冲突报告。然后设置内容安全策略:默认src'self。。。在强制阻塞模式下

YII2框架用于配置内容安全策略和其他安全标头。这是首选的方式

或者,您可以在页面底部的示例中设置CSP。在这种情况下,管理CSP并使用nonce值令牌并不容易

您还可以在中设置CSP。在这种情况下,任何第三方脚本都可以窃取nonce值并使用它,因此这是最不可取的方法

但是,如果您不知道如何以及在何处设置CSP,在为Smartlook设置CSP规则后,您的网页很可能会停止正常运行。因为上述CSP规则仅涵盖Smartlook源代码,但您的网页有自己的脚本/样式/字体等。 因此,您需要将Smartlook CSP规则和您自己的网页CSP规则合并为一个

最好的方法是首先只设置内容安全策略报告:默认src的self。。。在报告模式下,检查开发工具中的浏览器控制台错误或冲突报告。然后设置内容安全策略:默认src'self。。。在强制阻止模式下。

您需要将内容安全策略头添加到类似引导组件的响应组件中。使用s.th,例如:

Yii::$app->response->headers->add(
    'Content-Security-Policy',    
     "default-src 'self' $hostSubdomains http://google.com https://google.com https://www.google.com http://www.google.com"
);
您需要将内容安全策略头添加到类似引导组件的响应组件中。使用s.th,例如:

Yii::$app->response->headers->add(
    'Content-Security-Policy',    
     "default-src 'self' $hostSubdomains http://google.com https://google.com https://www.google.com http://www.google.com"
);

我的新配置,我要添加到生产我会张贴,如果它成功

扩展:-

在web/main.php内部

function generateRandomString($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}
$randomNonce  = generateRandomString(64);
 'components'[

 'on beforeRequest' => function ()use($randomNonce) {
        Yii::$app->params['defaultNonce'] = $randomNonce;
    }

]

在您的视图文件中 在全局变量中添加$defaultNonce,您可以在任何地方访问该变量

这就是我在web/main.php中为自己所做的

function generateRandomString($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}
$randomNonce  = generateRandomString(64);
 'components'[

 'on beforeRequest' => function ()use($randomNonce) {
        Yii::$app->params['defaultNonce'] = $randomNonce;
    }

]

最后一个是下面的代码

$defaultNonce=Yii::$app->params['defaultNonce']??无效


我的新配置,我要添加到生产我会张贴,如果它成功

扩展:-

在web/main.php内部

function generateRandomString($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}
$randomNonce  = generateRandomString(64);
 'components'[

 'on beforeRequest' => function ()use($randomNonce) {
        Yii::$app->params['defaultNonce'] = $randomNonce;
    }

]

在您的视图文件中 在全局变量中添加$defaultNonce,您可以在任何地方访问该变量

这就是我在web/main.php中为自己所做的

function generateRandomString($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}
$randomNonce  = generateRandomString(64);
 'components'[

 'on beforeRequest' => function ()use($randomNonce) {
        Yii::$app->params['defaultNonce'] = $randomNonce;
    }

]

最后一个是下面的代码

$defaultNonce=Yii::$app->params['defaultNonce']??无效


@F Baghi我可以简单地将其添加到布局中吗?我已经编辑了问题,您可以验证我是否出错了吗?最好是将其添加到控制器中,例如在beforeAction函数中,或者在返回之前的操作中,而不是布局中。@F Baghi我可以简单地将其添加到布局中吗?我已经编辑了问题,您可以验证我是否出错了吗最好将其添加到控制器中,例如在beforeAction函数中,或者在返回之前的某个操作中,而不是布局中。