Если thisworks
предоставлено пользователем, существует риск случайного внедрения SQL-символов или символов, которые не являются допустимыми в качестве идентификаторов SQLite.
Обычно в реляционном дизайне, добавлении таблиц или столбцов дляконкретный пользовательский ввод немного нахмурился.Обычно лучшим вариантом является использование одной таблицы и просто наличие столбца, который содержит переменную thisworks
.Потому что, в конце концов, select test from {thisworks}
- это примерно то же самое, что и select test from userdata where label = ?, param = {thisworks}
, но это намного безопаснее в отношении инъекций, и нет риска взрыва вашей базы данных из-за того, что она содержит базилион таблиц.При этом, SQLite, в частности, поддерживает 2 миллиарда таблиц в одном файле, так что вы можете сойти с рук.
Если вы это сделаете, обязательно отфильтруйте предоставленную переменную, лучше всего сбелый список, как только допускается az.