You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Psalm污点分析未检测到SQL注入代码,寻求解决方案

解决Psalm未检测到SQL注入漏洞的问题

问题原因

Psalm的污点分析功能默认需要通过配置明确启用,无配置文件运行时,默认规则不足以识别PDO查询中的SQL注入风险。

解决方案

1. 生成并配置Psalm配置文件

首先生成默认配置文件:

vendor/bin/psalm --init

打开生成的psalm.xml文件,在<psalm>根标签内添加或修改以下配置,确保污点分析启用并设置合适的错误级别:

<psalm
    errorLevel="1"
    resolveFromConfigFile="true"
>
    <taintAnalysis enabled="true"/>
    <!-- 保留其他默认配置内容 -->
</psalm>
  • errorLevel="1":让Psalm显示所有级别(从info到error)的风险提示,避免遗漏SQL注入这类问题。
  • <taintAnalysis enabled="true"/>:明确开启污点分析核心功能。

2. 重新执行扫描

使用配置文件重新运行扫描命令:

vendor/bin/psalm ./src/index.php

此时Psalm应该会检测到未过滤的用户输入$_GET['id']直接拼接进SQL查询的风险,输出类似提示:

Tainted input from $_GET reaches PDO::query

3. 额外排查(可选)

  • 确保Psalm版本为最新,旧版本可能对PDO的污点识别支持不完善:
    composer require --dev vimeo/psalm:latest
    
  • 若仍无检测结果,可在psalm.xml中确认已加载PDO的官方 stub 文件(默认已包含,用于标记PDO::query为SQL风险点):
    <stubs>
        <file name="vendor/vimeo/psalm/src/Stubs/PDO.php"/>
    </stubs>
    

内容的提问来源于stack exchange,提问作者Arthur Eudeline

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:19:53