У меня есть небольшой сайт проекта Python, где посетитель может попрактиковаться в написании кода SQL. Этот код действительно запускается и возвращает значения. Я знаю, что мне нужно предотвратить инъекцию SQL, но я не уверен, что это лучший подход, поскольку цель сайта заключается в том, чтобы пользователи могли писать и выполнять произвольный код SQL для реальной базы данных.
Что мне делать, чтобы предотвратить злонамеренное поведение? Я хочу запретить такие операторы, как DROP xyz ;, но пользователи все равно должны иметь возможность выполнять код. Я думаю, что, возможно, идеальное решение состоит в том, чтобы пользователи могли «читать» только из базы данных, ie. они могут выполнять только операторы SELECT (или их варианты). Но я не уверен, что «только для чтения» фиксирует все крайние случаи злонамеренного поведения. 1007 * Сейчас использую SQLite, но, вероятно, перейду на postgres
Сейчас я строго использую SQL, но, возможно, в будущем захочу добавить Python и другие языки Сайт построен с использованием Python (Flask)
Любые идеи и предложения будут полезны