Единственный «безопасный» способ, который я могу выяснить, - это передача пользовательского ввода через белый список, например, имена столбцов, которые можно получить через .column_names
, или проверенный список приемлемых агрегатных функций, которые пользователь может применять в запрос.
Непосредственная интерполяция пользовательского ввода в запросе оставит вас открытыми для атаки с использованием SQL-инъекций, и обычная санитария не может быть использована для этого довольно особого случая, поскольку она используется для связывания и санации значений, а не имен столбцов или ключевых слов SQL, которые могут быть опасными. и весьма тупой из рамок POV.