FreeRADIUS 3 хранит # в имени группы как = 23 для% {SQL-Group} - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть пользовательский бипин, связанный с группой пользователей с именем # dl # -daily-plan, которую FR может читать из базы данных mysql, но он хранит ее как = 23dl = 23-daily-plan в% {SQL-Group}.Есть ли какие-то особые аргументы в пользу этого, как я на конфигурации ванили FR, и это, кажется, происходит в этом

rlm_sql (sql): Reserved connection (7)
(1) sql: EXPAND SELECT id, username, attribute, value, op FROM radcheck WHERE username = '%{SQL-User-Name}' ORDER BY id
(1) sql:    --> SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'Bipin' ORDER BY id
(1) sql: Executing select query: SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'Bipin' ORDER BY id
(1) sql: User found in radcheck table
(1) sql: Conditional check items matched, merging assignment check items
(1) sql:   Cleartext-Password := "bipin"
(1) sql:   Expiration := "Feb 10 2020 00:00:00 +04"
(1) sql: EXPAND SELECT id, username, attribute, value, op FROM radreply WHERE username = '%{SQL-User-Name}' ORDER BY id
(1) sql:    --> SELECT id, username, attribute, value, op FROM radreply WHERE username = 'Bipin' ORDER BY id
(1) sql: Executing select query: SELECT id, username, attribute, value, op FROM radreply WHERE username = 'Bipin' ORDER BY id
(1) sql: EXPAND SELECT groupname FROM radusergroup WHERE username = '%{SQL-User-Name}' ORDER BY priority
(1) sql:    --> SELECT groupname FROM radusergroup WHERE username = 'Bipin' ORDER BY priority
(1) sql: Executing select query: SELECT groupname FROM radusergroup WHERE username = 'Bipin' ORDER BY priority
(1) sql: User found in the group table
(1) sql: EXPAND SELECT id, groupname, attribute, Value, op FROM radgroupcheck WHERE groupname = '%{SQL-Group}' ORDER BY id
(1) sql:    --> SELECT id, groupname, attribute, Value, op FROM radgroupcheck WHERE groupname = '=23dl=23-daily-plan' ORDER BY id
(1) sql: Executing select query: SELECT id, groupname, attribute, Value, op FROM radgroupcheck WHERE groupname = '=23dl=23-daily-plan' ORDER BY id
(1) sql: Group "#dl#-daily-plan": Conditional check items matched
(1) sql: Group "#dl#-daily-plan": Merging assignment check items
(1) sql: EXPAND SELECT id, groupname, attribute, value, op FROM radgroupreply WHERE groupname = '%{SQL-Group}' ORDER BY id
(1) sql:    --> SELECT id, groupname, attribute, value, op FROM radgroupreply WHERE groupname = '=23dl=23-daily-plan' ORDER BY id
(1) sql: Executing select query: SELECT id, groupname, attribute, value, op FROM radgroupreply WHERE groupname = '=23dl=23-daily-plan' ORDER BY id
(1) sql: Group "#dl#-daily-plan": Merging reply items
rlm_sql (sql): Released connection (7)

1 Ответ

0 голосов
/ 12 февраля 2019

Это не ошибка, а предполагаемое поведение.Для защиты от внедрения SQL существует список безопасных символов (safe_characters), которые передаются как есть, все остальные символы преобразуются в эту шестнадцатеричную нотацию перед использованием в запросе.

Чтобы решить эту проблему,Есть несколько вариантов:

  1. Переименуйте группу в таблицах базы данных, чтобы использовать эту экранированную форму.
  2. Добавьте # в список безопасных символов (на свой страх и риск)
  3. Вставить вызов в хранимую процедуру в запросах для преобразования = HH обратно в символ.
  4. Дождаться освобождения 3.0.18 и использовать опцию auto_escape
...