Html 如何在ii2中为smartsupp聊天添加内容安全策略(CSP)?
我使用的是Yii2小部件,它工作得很好,但无法在他们的网站上录制视频,他们建议添加一个称为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
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函数中,或者在返回之前的某个操作中,而不是布局中。