Skip to content
Menu
小小述博客
  • 首页
  • Nginx
  • Php
  • Laravel
  • Git
  • 在线工具
  • 资源下载
  • Magento2
小小述博客
2022年11月2日2022年12月29日

Magento 2.4 Content security policies 内容安全策略

Post Views: 75

1. Content security policies 内容安全策略

内容安全策略 (CSP) 是一种强大的工具,可用于缓解跨站脚本 (XSS) 和相关攻击,包括卡片浏览器、会话劫持、点击劫持等。 Web 服务器将 CSP 作为响应 HTTP 标头(即 Content-Security-Policy 和 Content-Security-Policy-Report-Only)发送到将脚本、样式和其他资源的来源列入白名单的浏览器。 CSP 和内置浏览器功能一起有助于防止:

  • 从攻击者的网站加载恶意脚本
  • 将信用卡信息发送到攻击者网站的恶意内联脚本
  • 加载恶意样式,使用户点击不应该出现在页面上的元素

2. Application support 应用支持

从 2.3.5 版开始,Adobe Commerce 和 Magento Open Source 支持 CSP 标头并提供配置它们的方法。 (此功能在 Magento_Csp 模块中定义。)该应用程序还提供应用程序级别的默认配置以及需要额外配置的单个核心模块。可以分别为 adminhtml 和店面区域配置策略,以适应不同的用例。该应用程序还允许为特定页面配置唯一的 CSP。

CSP 可以在两种模式下工作:

  1. report-only :仅报告 – 在此模式下,应用程序报告策略违规但不干预。这种模式对于调试很有用。默认情况下,CSP 违规会写入浏览器控制台,但可以将它们配置为以 HTTP 请求的形式向端点报告以收集日志。有许多服务可以为您收集、存储和分类商店的 CSP 违规报告。
  2. restrict mode: 限制模式 – 在此模式下,应用程序对任何违反策略的行为采取行动。

3. Default configuration 默认配置

默认情况下,CSP 配置为仅报告模式,允许商家和开发人员配置策略以根据他们的自定义代码工作。配置策略后,将模式切换为限制。

配置后,应用程序可以强制执行以下策略:

  1. 任何资源,例如 .js、.css、.jpg 或 .ttf 文件,都只能从商店的域中加载
  2. iframe 只能包含商店本身的页面
  3. AJAX 请求只能发送到商店
  4. 表格只能发送到商店
  5. 浏览器只能编译列入白名单的内联脚本和样式

4. Configure a module’s CSP mode 配置模块的 CSP 模式

您可以通过编辑模块的 etc/config.xml 文件在自定义模块中设置 CSP 模式。要将模式设置为限制,请将 default/csp/mode/admin/report_only 和/或 default/csp/mode/storefront/report_only 元素的值更改为 0。要启用仅报告模式,请将值设置为 1 .

示例 config.xml:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
    <default>
        <csp>
            <mode>
                <storefront>
                    <report_only>0</report_only>
                </storefront>
                <admin>
                    <report_only>0</report_only>
                </admin>
            </mode>
        </csp>
    </default>
</config>

您可以使用 Magento_Csp 模块中的 etc/config.xml 文件作为参考。创建你的组件文件结构描述了如何创建一个模块。

5. Configure CSPs for your custom code/extension/theme

为您的自定义代码/扩展/主题配置 CSP

Adobe Commerce 和 Magento Open Source 提供了多种方法来将列入白名单的资源添加到您的自定义代码、扩展程序或主题中。确保仅在需要它的模块中添加资源。例如,当您只需要从中加载 .js 文件时,不建议将域添加到 default-src 策略。而是将域添加到 script-src。

下表描述了每种类型的 CSP:

POLICY NAME:保单名称 DESCRIPTION:描述
default-src:默认源 The default policy :默认策略
base-uri :基础uri Defines which URLs can appear in a page’s <base> element. 定义哪些 URL 可以出现在页面的 <base> 元素中。
child-src:子源 Defines the sources for workers and embedded frame contents.
定义工作人员和嵌入框架内容的来源。
connect-src
连接源
Defines the sources that can be loaded using script interfaces.
定义可以使用脚本接口加载的源。
font-src 字体源 Defines which sources can serve fonts. 定义哪些源可以提供字体。
form-action 表单动作 Defines valid endpoints for submission from <form> tags.
定义从 <form> 标签提交的有效端点。
frame-ancestors框架祖先 Defines the sources that can embed the current page.
定义可以嵌入当前页面的来源。
frame-src帧源 efines the sources for elements such as <frame> and <iframe>.
定义元素的来源,例如 <frame> 和 <iframe>。
img-src Defines the sources from which images can be loaded.
定义可以从中加载图像的源。
manifest-src Defines the allowable contents of web app manifests.
定义 Web 应用清单的允许内容。
media-src媒体源 Defines the sources from which images can be loaded.
定义可以从中加载图像的源。
object-src对象源 object-src对象源
script-src脚本源 Defines the sources for JavaScript <script> elements.
定义 JavaScript <script> 元素的来源。
style-src样式-src Defines the sources for stylesheets.
定义样式表的来源。

5.1 Add a domain to the whitelist 将域添加到白名单

您可以通过将 csp_whitelist.xml 添加到自定义模块的 etc 文件夹中,将域添加到策略的白名单(如 script-src、style-src、font-src 等)。

<?xml version="1.0"?>
<csp_whitelist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Csp:etc/csp_whitelist.xsd">
    <policies>
        <policy id="script-src">
            <values>
                <value id="devdocs-base" type="host">https://developer.adobe.com</value>
                <value id="magento" type="host">https://magento.com</value>
            </values>
        </policy>
        <policy id="connect-src">
            <values>
                <value id="devdocs" type="host">https://developer.adobe.com</value>
            </values>
        </policy>
    </policies>
</csp_whitelist>
csp_whitelist

5.2 Whitelist an inline script or style 将内联脚本或样式列入白名单

对于 style-src 和 script-src(Adobe Commerce 和 Magento Open Source 2.4 的默认设置)内联脚本和样式禁用了 unsafe-inline 的商店必须列入白名单。

5.3 Advanced CSP configuration 高级 CSP 配置

本文参考: https://developer.adobe.com/commerce/php/development/security/content-security-policies/

发表回复

要发表评论,您必须先登录。

504 API Bootstrap基础 Composer 基础 Docker elasticsearch facebook Git 基础 Google Go 入门 IntegerNet_Solr jdk Jquery Laravel Laravel-admin Laravel 入门到精通教程 Laravel 基础 Linux Cron Linux sudo linux命令 Linux权限 Linux 用户和组 Linux 解压 Lnmp Magento2 主题 Magento2 事件 Magento2 功能 Magento2 命令 Magento2 安装 Magento2 数据库 Magento2 模块 Mamp Paypal php Phpstorm PHP优化 PHP函数 Php面试题 Robots solr Sourcetree SSH SSL Wordpress 阿里云服务器

  • linux 系统查看所有用户的crontab定时任务2023年1月5日
  • Mgento 2 缓存文件用户组权限不对2023年1月5日
  • Magento 2 中怎么禁用事件观察器2022年12月30日
  • Elasticsearch 安装与卸载2022年12月2日
  • Magento 2.4 Content security policies 内容安全策略2022年11月2日
  • Magento 2.4 Disable Page Builder2022年11月1日
  • phpMyAdmin无法缓存模板文件,所以会运行缓慢2022年10月29日
  • PhpMyAdmin配置文件现在需要一个短语密码2022年10月29日
  • Mamp xxx column name table_namePlease run mysql_upgrade2022年10月29日
  • 如何在 PHPMYADMIN 中将表数据显示设置为最大5002022年10月26日
  • 开源工厂
  • 码农网
  • 前端学习
  • Get社区学习
  • Guru99 学习
  • tecadmin.net
  • 深入理解PHP内核
  • 国际IT专场
  • 51CTO
  • https://bbs.mallol.cn
  • http://techjeffyu.com/
  • https://webkul.com/
  • qastack
  • Innfoq
  • 刘祥博客
  • 阿里云
  • DigitalOcean
  • 华为云服务器
  • 华为云开发者中心
  • 华为云服务器文档
  • 阿里云服务器文档
  • Linux命令大全(手册)
  • WEB技术分享
  • 博学无忧博客
  • Ostechnix
  • Linux公社
  • LinuxHomene
  • Linux 服务器操作
  • Linux 就该这么学
  • Linux 从入门到精通
  • Linux 中国开源社区
  • Linux命令大全(手册)
  • Ubuntu Apache 命令学习
  • CSDN
  • 菜鸟学习教程
  • 鸟哥的Linux 私房菜
  • w3school教程
  • Bootstrap 中文网
  • Yii 中文网
  • Yii中文框架
  • 程序员的在线工具
  • 运维教程
  • 梦康的博客
  • 考评师
  • 社交分享教程
  • GitHub
  • 后端进阶
  • 端隐SDP 零信任安全
  • 示说网
  • 脚本之家
  • 开源资源
  • 蓝文资源库
  • Ubuntu 官网
  • linuxize.com
  • Linux Help
  • tecmint
  • 脚本之家在线工具
  • php1中文社区
  • 云知梦
  • IT之家
  • https://www.geeksforgeeks.org/
  • https://laravel-school.com/
  • https://laravelacademy.org/
  • https://zditect.com/guide/
  • https://www.studytonight.com/
  • https://dev.to/
  • https://dev.to/listings
  • https://dev.to/saifullah/8-free-websites-to-learn-coding-3c5
  • https://www.rakeshjesadiya.com/
  • magento-2-video-tutorials

©2023 小小述博客 | Powered by WordPress and Superb Themes!