应检查配置文件中密码是否明文存储:laravel查config/database.php、codeigniter查application/config/database.php、thinkphp查conf/config.php,搜索'password'=>等键名;若值为'123456'或getenv()未定义,则属明文暴露。

检查数据库连接是否明文存储密码
打开项目根目录下的配置文件,常见路径为 config/database.php(Laravel)、application/config/database.php(CodeIgniter)或 Conf/Config.php(ThinkPHP)。
搜索 【'password' =>、【'pwd' =>、【'pass' => 等键名,定位数据库凭据赋值语句。
若发现类似 'password' => '123456' 或 'password' => getenv('DB_PASSWORD') 但环境变量未在 .env 或服务器中实际定义,则该连接凭据处于明文暴露状态——攻击者一旦获取配置文件或服务器 shell,可直接登录数据库。
验证是否启用PDO预处理机制
在 Model 层或数据访问层中,搜索所有 SQL 执行函数调用点:包括 DB::select()、$pdo->query()、mysqli_query()、execute() 等。
方法一:检查是否存在字符串拼接 SQL 的痕迹
例如:"SELECT * FROM users WHERE id = " . $_GET['id'] 或 "INSERT INTO log VALUES ('" . $input . "') —— 这类写法必须立即标记为高危。
方法二:确认是否统一使用参数化查询
找到至少一处 $stmt = $pdo->prepare("UPDATE users SET name = ? WHERE id = ?"); $stmt->execute([$name, $id]); 类型代码,说明预处理已落地;若全项目仅见 query() 直接执行且无 quote() 或 real_escape_string() 包裹,则【未启用基础防注入机制】。
审计数据库连接是否强制启用SSL/TLS加密
第一步:在数据库配置数组中查找 'options' 或 'sslmode'、'ssl'、'encrypt' 等字段。
第二步:确认是否设置为强制加密模式
✅ 正确示例:'options' => [PDO::MYSQL_ATTR_SSL_CA => '/etc/ssl/certs/ca.pem'] 或 'sslmode' => 'require'
❌ 危险配置:'sslmode' => 'prefer'(降级为非加密)、'ssl' => false、或整个 'ssl' 键缺失。
第三步:验证底层驱动是否支持并启用 TLS 1.2+
若项目使用 MySQLi,需检查是否调用 mysqli_ssl_set();若用 PDO,需确认 DSN 中含 &sslmode=require 且 PHP 编译时启用 OpenSSL 支持。未启用时,数据库通信全程明文,中间人可截获账号、密码、患者记录等全部敏感内容。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











