이상한 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.

관련 정보