【问题标题】:String ('A=0) is appended to the HTTP GET URL [duplicate]字符串 ('A=0) 附加到 HTTP GET URL [重复]
【发布时间】:2017-04-16 22:54:24
【问题描述】:

我们的一些用户在我们的网站上遇到了一些间歇性错误(PDO 异常)。检查日志后,我发现字符串 String ('A=0) 附加到 HTTP 获取。这很奇怪,因为我们绝对没有对此进行编码,而且它只发生在不同页面中的某些用户身上,而且不一致。

错误日志如下: [错误] 28960#0: *500749 FastCGI 在标准错误中发送:“PHP 消息:处理另一个错误时发生错误: 带有消息“SQLSTATE [42000]”的异常“PDOException”:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在“A=0”附近使用正确的语法 在第 4 行限制 1'

从上游读取响应头时,客户端:10.202.1.135,服务器:xxxx.com,请求:“GET /index.php/productdetail?pid=8473'A=0 HTTP/1.1”,上游:“fastcgi: //127.0.0.1:9000”,主机:“xxxx.com”

注意: /index.php/productdetail?pid=8473 是没有 'A=0

的正确 URL

感谢任何可以就如何/何时附加 'A=0 提供一些见解的人。

【问题讨论】:

  • 在这种情况下,您需要搜索设置相关查询的代码并对其进行调试。
  • 根据给定的信息,无法告诉您为什么会发生这种情况。唯一可以说明的是,您的代码容易受到 SQL 注入的影响(在查询中使用之前,您不要转义 pid)。因为如果您要进行适当的转义,那么简单地将 'A=0 附加到参数不会导致 sql 语法错误。
  • 主要问题是什么导致 'A=0 附加到 GET。是否有一些我们可以查看的服务器设置?顺便说一句,我们正在使用 Nginx。
  • 即使我们为 SQL 注入转义了 pid,该 pid 仍然不正确(类似于“8473'A”而不是 8473),因此页面仍然无法正常工作。

标签: php mysql web


【解决方案1】:

这不是你的代码。它来自 SQL 注入探针。更多细节可以在这里找到:

Strange URL containing 'A=0 or '0=A in web server logs

在上周,我在不同的页面和不同的 IP 上看到了 150 个此类请求。您可以通过检查 UserAgent 是否与该帖子中的匹配来确认:

Mozilla/5.0(Windows;U;Windows NT 5.1;pt-PT;rv:1.9.1.2)Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)

【讨论】:

  • 而且,显然,一次成功的探测。
  • 仅仅因为页面在无效输入下无法运行,并不意味着它容易受到无效输入的攻击。对我们来说,这更多是谁看到错误消息的问题 - 开发人员或浏览器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-20
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多