diff --git a/frappe/model/db_query.py b/frappe/model/db_query.py index 53a1c6c13d..7767d2a021 100644 --- a/frappe/model/db_query.py +++ b/frappe/model/db_query.py @@ -240,6 +240,9 @@ class DatabaseQuery(object): _is_query(field) + invalid_characters_regex = r".*[^a-zA-Z0-9-_ ,`'\"\*\.\(\)].*" + if re.match(invalid_characters_regex, field): + frappe.throw(_("Illegal characters in SQL query")) def extract_tables(self): """extract tables from fields""" @@ -688,6 +691,9 @@ class DatabaseQuery(object): if 'select' in _lower and ' from ' in _lower: frappe.throw(_('Cannot use sub-query in order by')) + invalid_characters_regex = r".*[^a-z0-9-_ ,`'\"\.\(\)].*" + if re.match(invalid_characters_regex, _lower): + frappe.throw(_("Illegal characters in SQL query")) for field in parameters.split(","): if "." in field and field.strip().startswith("`tab"): diff --git a/frappe/public/js/frappe/form/multi_select_dialog.js b/frappe/public/js/frappe/form/multi_select_dialog.js index 0d8d2caca1..e5d4d91d32 100644 --- a/frappe/public/js/frappe/form/multi_select_dialog.js +++ b/frappe/public/js/frappe/form/multi_select_dialog.js @@ -201,11 +201,12 @@ frappe.ui.form.MultiSelectDialog = Class.extend({ let $row = $(`