奇妙なProFTPdとmod_sql文字列エスケープ

奇妙なProFTPdとmod_sql文字列エスケープ

SQLユーザーと一緒にProFTPdを使用し、在庫SQL構成を使用しようとしています。

現在、奇妙な文字列エスケープの問題がありますが、SELECTではなく "tally"テーブルのINSERTでのみ機能します。

私のセッションは

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

関連情報