扫描前应临时调整防护策略而非关闭防护,包括白名单放行扫描IP、开启PHP错误显示、注释open_basedir、停用WAF中路径遍历等规则,但须保持allow_url_include=Off等基础防线启用。

扫描前不建议主动关闭防护,而是应临时调整策略、保留日志、明确边界——真正需要“关”的不是防护本身,是可能干扰扫描结果或引发误报的过度响应机制。
禁用主动拦截类模块(如WAF规则)
很多网站部署了云WAF或Nginx/ModSecurity规则,会直接拦截含../、php://filter、data://等特征的请求,导致扫描器收不到响应,误判为“无漏洞”。可临时停用以下规则:
- 路径遍历(LFI)检测规则(如匹配
%2e%2e%2f、..%2f) - 伪协议载荷拦截(如
php://、data://、phar://) - 反序列化特征识别(如匹配
O:.*:、a:.*:{) - 但不要关闭整个WAF,建议仅对扫描IP段或特定User-Agent做白名单放行
调整PHP运行时行为(非永久关闭)
某些PHP配置会掩盖真实响应,需临时放宽以获取准确反馈:
-
display_errors = Off→ 可临时设为On,让错误信息返回HTTP响应体(便于发现include()报错、路径解析失败等线索) -
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED→ 可临时设为E_ALL,暴露所有警告和Notice(如file_get_contents(): failed to open stream) -
open_basedir若限制过严,可临时注释或设为空值(open_basedir = ""),避免因权限拒绝掩盖LFI可能性;扫描后务必恢复
暂停日志与告警干扰项
防止扫描触发大量告警淹没真实事件:
立即学习“PHP免费学习笔记(深入)”;
- 临时关闭安全插件(如Fail2ban、OSSEC)对Web访问日志的实时封禁逻辑
- 禁用应用层异常告警(如ThinkPHP的
app_trace=true或自定义异常监控上报) - 不关闭
error_log,但可将日志级别调低(如只记录E_ERROR),避免被扫描日志刷屏
不碰红线:这些绝对不能关
以下属于基础防线,扫描期间也必须保持启用:
-
allow_url_include = Off(远程包含已默认关闭,严禁开启) -
disable_functions中对exec、system、shell_exec等的禁用 - PHP-FPM的
security.limit_extensions(确保只解析.php) - 上传目录的
php_flag engine off或Nginx的location ~ \.php$路径隔离



















