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

Delphi CGI SQL查询本地正常服务器报403禁止访问求助

问题排查与解决方案

核心现象:

  • 本地Abyss服务器环境下,执行select * from table1和select column1, column2 from table1均正常返回结果
  • 服务器端IIS环境下,select *语句能正常执行,但指定列的查询返回403 Forbidden错误,更换VPN IP为localhost后问题依旧

以下是针对性的排查和解决步骤:

1. 检查IIS请求过滤规则

IIS的请求过滤模块可能将包含特定列名的请求误判为恶意内容,触发拦截:

  • 打开IIS管理器,定位到目标网站,进入「请求过滤」功能
  • 分别查看「URL」「查询字符串」标签,确认是否存在针对column1/column2或相关关键字的拦截规则
  • 同时确认「HTTP动词」中POST请求已被允许(select *能正常执行大概率POST是允许的,但仍需验证)
  • 若发现相关拦截规则,可临时禁用后测试指定列的查询是否正常

2. 排查URL重写规则

网站配置的URL重写规则可能对提交的SQL内容进行匹配拦截:

  • 进入网站的「URL重写」模块,查看所有已配置的规则
  • 临时禁用全部重写规则,测试指定列的查询是否恢复正常,再逐步排查具体触发拦截的规则

3. 检查服务器安全软件/防火墙

托管服务器上的杀毒软件、Web应用防火墙(WAF)等安全工具,可能将指定列的SQL查询误识别为SQL注入攻击:

  • 查看安全软件的拦截日志,确认是否有针对该SQL请求的拦截记录
  • 暂时关闭Web防护类功能,测试查询是否正常执行
  • 若为WAF拦截,可添加自定义放行规则,允许该类合法SQL请求

4. 验证应用程序池权限与数据库访问

虽然本地执行正常,但仍需排除服务器端应用身份的数据库权限问题:

  • 查看IIS应用程序池的运行身份,使用该身份直接连接SQL Server,执行select column1, column2 from table1,确认数据库层面能正常返回结果
  • 若数据库执行正常,说明问题出在IIS或服务器安全层,而非数据库权限

5. 检查表单提交的编码与内容处理

服务器端对表单提交内容的编码处理异常,可能导致SQL内容被篡改,触发安全拦截:

  • 确认页面表单的提交方式为POST,编码类型为application/x-www-form-urlencoded或multipart/form-data
  • 检查服务器端代码中获取SQL文本的逻辑,是否存在过度的特殊字符过滤或转义,导致SQL语句被修改后触发拦截

内容的提问来源于stack exchange,提问作者Gilles Lamenoise

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:05:27