奇怪的 ProFTPd 和 mod_sql 字符串转义

奇怪的 ProFTPd 和 mod_sql 字符串转义

我正在/尝试将 ProFTPd 与 SQL 中的用户一起使用并使用库存 sql 配置。

我目前遇到奇怪的字符串转义问题,但仅适用于 INSERT 到“tally”表中,不适用于 SELECT。

我的会议是

SQLNamedQuery get-quota-tally SELECT "name,quota_type,bytes_in_used,bytes_out_used,bytes_xfer_used,files_in_used,files_out_used,files_xfer_used FROM ftp_quota_tally WHERE name = '%{0}' AND quota_type = '%{1}'"

SQLNamedQuery insert-quota-tally FREEFORM "INSERT INTO ftp_quota_tally (name,quota_type,bytes_in_used,bytes_out_used,bytes_xfer_used,files_in_used,files_out_used,files_xfer_used) VALUES (%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7})"

sql 查询日志显示了 SELECT 的这一点:

2020-09-15 03:53:37,317 mod_sql/4.5[19831]: query "SELECT name,quota_type,bytes_in_used,bytes_out_used,bytes_xfer_used,files_in_used,files_out_used,files_xfer_used FROM ftp_quota_tally WHERE name = 'USERNAME_HERE' AND quota_type = 'user'"

没关系,但它显示

2020-09-15 03:53:37,321 mod_sql/4.5[19831]: query "INSERT INTO ftp_quota_tally (name,quota_type,bytes_in_used,bytes_out_used,bytes_xfer_used,files_in_used,files_out_used,files_xfer_used) VALUES (\'USERNAME_HERE\', \'user\', 0.000000, 0.000000, 0.000000, 0, 0, 0)"

ProFTPd 使用 . 转义 ${0} 和 ${1} \'

笔记:

(1)我已经尝试过使用这个sql查询

SQLNamedQuery insert-quota-tally FREEFORM "INSERT INTO ftp_quota_tally (name,quota_type,bytes_in_used,bytes_out_used,bytes_xfer_used,files_in_used,files_out_used,files_xfer_used) VALUES ('%{0}', '%{1}', %{2}, %{3}, %{4}, %{5}, %{6}, %{7})"

这导致更多人逃跑

2020-09-15 04:15:58,490 mod_sql/4.5[20643]: query "INSERT INTO ftp_quota_tally (name,quota_type,bytes_in_used,bytes_out_used,bytes_xfer_used,files_in_used,files_out_used,files_xfer_used) VALUES ('\'USERNAME_HERE\'', '\'user\'', 0.000000, 0.000000, 0.000000, 0, 0, 0)"

(2)我也尝试过非FREEFORM方式

INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftp_quota_tally 

这也会导致与我的 FREEFORM 方式相同的奇怪转义。

有任何想法吗?

答案1

从 1.3.7 版本开始,该问题的原因被查明是 ProFTPD 中的一个错误;看问题#1149

相关内容