Проблема предотвращения инъекций MySQL / Python - PullRequest
0 голосов
/ 11 декабря 2019

В приложении, которое я создаю, пользователь может ввести имя БД, к которой он хочет подключиться, и код соединит пользователя с ним.

Я пытаюсь предотвратить любой MySQLинъекция в этот очень простой запрос, и он пытался сделать это, используя следующее: cursor.execute("USE %s;", (dbName,))

Получил оператор этого типа по следующей ссылке: Лучшая практика Python и безопасный способ подключения к MySQL и выполнениязапросы

Однако он не подключается к БД. Вместо этого if выдаст мне следующую ошибку:

1064 (42000): у вас есть ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с '' my_db_name '' в строке 1

Когда я выполняю быструю и грязную конкатенацию, он подключается просто отлично: cursor.execute("USE " + dbName)

Разве нельзя использовать этот тип предотвращения SQL-инъекций, когда SQL не является запросом? Это работает только при вставке параметров в оператор SELECT? Как мне поступить?

Я действительно извиняюсь, если это глупый вопрос. Я очень новый в Python и значительно новый в SQL в целом.

...