diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index e525bba8dc2..84486d5334e 100644
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -2636,3 +2636,4 @@ AIModelForFeature=AI model for features (AI service %s)
communityRepo=Community repository
online=Online
NotConnected=Not connected
+GraphicalView=Graphical view
diff --git a/htdocs/website/index.php b/htdocs/website/index.php
index 6019924597a..5e4f3d5ec2a 100644
--- a/htdocs/website/index.php
+++ b/htdocs/website/index.php
@@ -4387,51 +4387,52 @@ if ($action == 'editsecurity') {
// Force RP
print '
';
- print '| '.$form->textwithpicto($langs->trans('WebsiteSecurityForceRP'), $langs->trans("Recommended").': "strict-origin-when-cross-origin" '.$langs->trans("or").' "same-origin"=more secured"').' | ';
+ print ''.$form->textwithpicto($langs->trans('WebsiteSecurityForceRP'), 'HTTP Header Referer-Policy
'.$langs->trans("Recommended").': "strict-origin-when-cross-origin" '.$langs->trans("or").' "same-origin"=more secured"', 1, 'help', 'valignmiddle', 0, 3, 'WEBSITE_'.$object->id.'_SECURITY_FORCERP').' | ';
print 'id."_SECURITY_FORCERP").'"> | ';
print '
';
// Force STS
print '';
- print '| '.$form->textwithpicto($langs->trans('WebsiteSecurityForceSTS'), $langs->trans("Example").': "max-age=31536000; includeSubDomains"').' | ';
+ print ''.$form->textwithpicto($langs->trans('WebsiteSecurityForceSTS'), 'HTTP Header Strict-Transport-Security
'.$langs->trans("Example").': "max-age=31536000; includeSubDomains"', 1, 'help', 'valignmiddle', 0, 3, 'WEBSITE_'.$object->id.'_SECURITY_FORCESTS').' | ';
print 'id."_SECURITY_FORCESTS").'"> | ';
print '
';
// Force PP
print '';
- print '| '.$form->textwithpicto($langs->trans('WebsiteSecurityForcePP'), $langs->trans("Example").': "camera=(), microphone=(), geolocation=*"').' | ';
+ print ''.$form->textwithpicto($langs->trans('WebsiteSecurityForcePP'), 'HTTP Header Permissions-Policy
'.$langs->trans("Example").': "camera=(), microphone=(), geolocation=*"', 1, 'help', 'valignmiddle', 0, 3, 'WEBSITE_'.$object->id.'_SECURITY_FORCEPP').' | ';
print 'id."_SECURITY_FORCEPP").'"> | ';
print '
';
$examplecsprule = "frame-ancestors 'self'; img-src * data:; font-src *; default-src 'self' 'unsafe-inline' 'unsafe-eval' *.paypal.com *.stripe.com *.google.com *.googleapis.com *.google-analytics.com *.googletagmanager.com;";
// Force CSPRO
print '';
- print '| '.$form->textwithpicto($langs->trans('WebsiteSecurityForceCSPRO'), $langs->trans("Example").": ".$examplecsprule).' | ';
+ print ''.$form->textwithpicto($langs->trans('WebsiteSecurityForceCSPRO'), 'HTTP Header Content-Security-Policy-Report-Only
'.$langs->trans("Example").": ".$examplecsprule, 1, 'help', 'valignmiddle', 0, 3, 'WEBSITE_'.$object->id.'_SECURITY_FORCECSPRO').' | ';
print 'id."_SECURITY_FORCECSPRO").'"> | ';
print '
';
- print '';
- print '';
- // Content Security Policy
- print '';
- print '
';
- print '| '.$form->textwithpicto($langs->trans('ContentSecurityPolicy'), $langs->trans("Example").": ".$examplecsprule).' |
';
- print '| '.$langs->trans("Value").': | |
';
-
- print ' |
';
-
- print ' | ';
- print ''.$form->selectarray("select_identifier_WEBSITE_SECURITY_FORCECSP", $selectarrayCSPDirectives, "select_identifier_WEBSITE_SECURITY_FORCECSP", 1, 0, 0, '', 0, 0, 0, '', 'minwidth300').' | ';
+ // Force CSP - Content Security Policy
+ print '
';
+ print ''.$form->textwithpicto($langs->trans('ContentSecurityPolicy'), 'HTTP Header Content-Security-Policy
'.$langs->trans("Example").": ".$examplecsprule, 1, 'help', 'valignmiddle', 0, 3, 'WEBSITE_'.$object->id.'_SECURITY_FORCECSP').' | ';
print '';
+
+ print '';
+
+ print ' ';
+
+ print ' ';
+
+ print ' ';
+ print img_picto('', 'graph', 'class="pictofixedwidth"').$langs->trans("GraphicalView").' ';
+ print $form->selectarray("select_identifier_WEBSITE_SECURITY_FORCECSP", $selectarrayCSPDirectives, "select_identifier_WEBSITE_SECURITY_FORCECSP", 1, 0, 0, '', 0, 0, 0, '', 'minwidth200 maxwidth300 inline-block');
+ print ' ';
print ' ';
foreach ($selectarrayCSPSources as $key => $values) {
- print ' ';
- print $form->selectarray("select_".$key."_WEBSITE_SECURITY_FORCECSP", $values, "select_".$key."_WEBSITE_SECURITY_FORCECSP", 1, 0, 0, '', 0, 0, 0, '', 'minwidth300 select_WEBSITE_SECURITY_FORCECSP');
+ print ' ';
+ print $form->selectarray("select_".$key."_WEBSITE_SECURITY_FORCECSP", $values, "select_".$key."_WEBSITE_SECURITY_FORCECSP", 1, 0, 0, '', 0, 0, 0, '', 'minwidth200 maxwidth300 inline-block select_WEBSITE_SECURITY_FORCECSP');
print ' ';
}
- print ' | ';
- print ' | ';
- print ' | ';
- print '
';
- print '
';
+ print ' ';
+ print '
';
+ print ' ';
+ print '
';
print '
';
// Content Security Policy list of selected rules
@@ -4463,6 +4464,15 @@ if ($action == 'editsecurity') {
print '';
print '';
+ print '';
+
+ print '';
+ print '';
+
+ print '';
+ print '';
+
+
print '