Есть ли угроза безопасности при использовании введенной пользователем переменной в sqlite3.connect ()? - PullRequest
3 голосов
/ 29 июля 2011

У меня есть пользователи, которые создают и подключаются к базе данных через приложение Python,

           dbname = raw_input("Please enter the game name you wish to connect to, or the name of a new game: ")
           db = sqlite3.connect(dbname)

Мне интересно: есть ли какие-либо данные, которые потенциально злонамеренный пользователь мог бы использовать для атаки на базу данных (при условии, что у меня нет других уязвимостей в других обработчиках) или для атаки на базовую систему, на которой работает python?(Я знаю, что пользователь может продолжать создавать бесконечное количество баз данных, запуская программу снова и снова, однако я не могу придумать никакого другого решения, кроме квот для этого).

Заранее спасибо!

Трэвис

Ответы [ 4 ]

3 голосов
/ 29 июля 2011

Они могут передаваться в ":memory", что может или не может оказать неблагоприятное влияние на систему, в зависимости от того, что делает ваше приложение.

Они могут контролировать транзакции (черезisolation_level параметр), который может испортить взаимодействие вашей программы с базой данных.

Я бы проверил ввод пользователя по словарю возможных имен баз данных.

1 голос
/ 29 июля 2011

Вы не должны этого допустить. Представьте, что может произойти, если пользователь вступит в «Глобальную термоядерную войну»?

На полном серьезе вы, вероятно, захотите дать пользователю меню с идентификаторами, например, 1..5, связанными с играми, а затем в своем коде используйте что-то вроде оператора переключения регистра, чтобы установить имя БД для подключения к .

0 голосов
/ 29 июля 2011

В случае сомнений очистите данные, потому что:

garbage in == garbage out

если пользователь вводит мусор программа, скорее всего, выводит мусор

Цитата:

Все входные данные, пока не доказано обратное, (1) вредоносны, (2) готовы взломать ваш код и (3) полностью способны на это.(Тем не менее, это не похоже на типичную лазейку в системе безопасности.) - delnan

...

Санируйте его, экранируя, кодируя и т. Д. Затем проверьтепротив белого списка , а не черного списка (потому что он не проверяет неизвестные опасности в отличие от белого списка )

0 голосов
/ 29 июля 2011

Обычно самих соединений не о чем беспокоиться. Это любые запросы, которые могут быть злонамеренными или разрушительными. Когда пользователь вводит имя базы данных, к которой он подключается, я не вижу угрозы безопасности, но я должен убедиться, что ваши запросы не подвержены риску инъекций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...