mortenson / psalm-plugin-drupal
Drupal安全分析的Psalm支持。
dev-master
2024-03-25 15:28 UTC
Requires
- psalm/plugin-symfony: ^5.0
- vimeo/psalm: ^5
Requires (Dev)
- codeception/codeception: ^4.1
- codeception/module-asserts: ^1.0.0
- codeception/module-phpbrowser: ^1.0.0
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.3
- weirdan/codeception-psalm-module: dev-master
This package is auto-updated.
Last update: 2024-08-25 16:16:15 UTC
README
psalm-plugin-drupal
一个针对安全扫描(SAST)污点分析的Drupal集成插件,专注于Psalm。
功能
- 为接收器、源和净化器提供占位符
- 加载
.module
和.theme
文件 - 在没有安装站点的模块上自动加载模块
- 支持
\Drupal::service()
- 用于将Drupal容器导出为XML的自定义脚本
- 支持检测受污染的渲染数组
- 对控制器和方法的新颖支持。
在您的Drupal网站上安装和运行
此插件旨在用于您的Drupal网站,用于扫描自定义模块。请注意,如果您遵循此指南并在贡献模块上运行它,并发现有效结果,您应向Drupal安全团队报告您的发现。
要安装插件
- 运行
composer require mortenson/psalm-plugin-drupal:dev-master
- 将目录更改到您的Drupal安装的根目录(例如:
cd web
,cd docroot
)。 - 在您的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>
- 运行
php ../vendor/mortenson/psalm-plugin-drupal/scripts/dump_script.php && ../vendor/bin/psalm .
请注意,vendor
的路径可能会根据您的Drupal安装而变化。
为看似未使用的类方法生成入口点
Drupal的代码路径并不总是清晰的,尤其是在Drupal 8中。因此,像控制器方法(又称路由回调)这样的方法在运行Psalm时将不会被分析。
要使Psalm分析这些路径,您需要生成一个执行您想要测试的方法的入口点文件。
已为您提供了一个脚本以生成此入口点。要使用它,请执行以下操作:
- 运行
php ../vendor/mortenson/psalm-plugin-drupal/scripts/generate_entrypoint.php <逗号分隔的自定义模块路径>
- 将
<file name="psalm_drupal_entrypoint.module"></file>
添加到您的psalm.xml
文件中的<projectFiles>
节点下。 - 运行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
修复问题。