mortenson/psalm-plugin-drupal

Drupal安全分析的Psalm支持。

资助包维护!
mortenson

安装次数: 32,821

依赖项: 0

建议者: 0

安全: 0

星标: 43

关注者: 8

分支: 7

开放问题: 3

类型:psalm-plugin

dev-master 2024-03-25 15:28 UTC

This package is auto-updated.

Last update: 2024-08-25 16:16:15 UTC


README

Test Status

psalm-plugin-drupal

一个针对安全扫描(SAST)污点分析的Drupal集成插件,专注于Psalm。

功能

  • 为接收器、源和净化器提供占位符
  • 加载.module.theme文件
  • 在没有安装站点的模块上自动加载模块
  • 支持\Drupal::service()
  • 用于将Drupal容器导出为XML的自定义脚本
  • 支持检测受污染的渲染数组
  • 对控制器和方法的新颖支持。

在您的Drupal网站上安装和运行

此插件旨在用于您的Drupal网站,用于扫描自定义模块。请注意,如果您遵循此指南并在贡献模块上运行它,并发现有效结果,您应向Drupal安全团队报告您的发现。

要安装插件

  1. 运行composer require mortenson/psalm-plugin-drupal:dev-master
  2. 将目录更改到您的Drupal安装的根目录(例如:cd webcd docroot)。
  3. 在您的Drupal安装的根目录中创建一个psalm.xml文件,如下所示:
<?xml version="1.0"?>
<psalm
  errorLevel="6"
  resolveFromConfigFile="true"
  runTaintAnalysis="true"
  autoloader="../vendor/mortenson/psalm-plugin-drupal/scripts/autoload.php"
>
    <fileExtensions>
        <extension name=".php" />
        <extension name=".module" />
        <extension name=".theme" />
        <extension name=".inc" />
    </fileExtensions>
    <projectFiles>
        <directory name="modules/custom"/>
    </projectFiles>
    <plugins>
        <pluginClass class="Psalm\SymfonyPsalmPlugin\Plugin">
            <containerXml>DrupalContainerDump.xml</containerXml>
        </pluginClass>
        <pluginClass class="mortenson\PsalmPluginDrupal\Plugin">
            <containerXml>DrupalContainerDump.xml</containerXml>
            <extensions>
              <!-- List your modules explicitly here, as the scan may happen without a database -->
              <module name="my_custom_module" />
              <module name="my_module_dependency" />
            </extensions>
        </pluginClass>
    </plugins>
</psalm>
  1. 运行php ../vendor/mortenson/psalm-plugin-drupal/scripts/dump_script.php && ../vendor/bin/psalm .

请注意,vendor的路径可能会根据您的Drupal安装而变化。

为看似未使用的类方法生成入口点

Drupal的代码路径并不总是清晰的,尤其是在Drupal 8中。因此,像控制器方法(又称路由回调)这样的方法在运行Psalm时将不会被分析。

要使Psalm分析这些路径,您需要生成一个执行您想要测试的方法的入口点文件。

已为您提供了一个脚本以生成此入口点。要使用它,请执行以下操作:

  1. 运行php ../vendor/mortenson/psalm-plugin-drupal/scripts/generate_entrypoint.php <逗号分隔的自定义模块路径>
  2. <file name="psalm_drupal_entrypoint.module"></file>添加到您的psalm.xml文件中的<projectFiles>节点下。
  3. 运行Psalm。

目前,只有routing.yml文件被解析以生成入口点,专注于控制器和表单方法。

贡献

运行和编写测试

测试使用Codeception通过weirdan/codeception-psalm-module

您可以使用composer run test运行测试。

要编写测试,编辑tests/acceptance/PsalmPluginDrupal.feature并添加一个新场景。

要运行单个失败的测试,在Scenario:行上方添加@failing标签,然后运行composer run test-failing

检查代码风格

在提交代码之前应检查代码风格。

为此,运行composer run cs-check,或运行composer run cs-fix以自动使用phpcbf修复问题。