Python sqlite:防止在表名中注入 SQL [duplicate]

Python sqlite: Preventing SQL injection in table names [duplicate]

提问人:BOBONA 提问时间:6/30/2021 最后编辑:BOBONA 更新时间:7/1/2021 访问量:200

问:

这里是很基本的问题。在 python 中,使用 sqlite3,我能够用 ?占位符。但是,此选项不适用于表名。

在大多数情况下,我很容易检查表是否存在,但是我还需要从用户提供的占位符创建表。

我该怎么做?

编辑:老实说,在这种情况下,相关问题真的无济于事......这里的问题是我希望用户提供自己的表名。无论如何,我决定使用我在这里自己的答案中描述的方案,所以我不再真正关心这个问题了。

python sqlite sql 注入

评论

0赞 BOBONA 6/30/2021
还有为什么我不能在问题的开头写“嗨,”而不删除 stackoverflow,这是不是太友好了?
0赞 BOBONA 6/30/2021
不是真的,因为理想情况下,这些名称将由用户提供,我宁愿不必仅仅为了这一件事而学习像 sqlalchemy 这样的整个 orm
0赞 Chris 6/30/2021
“因为理想情况下,这些名称将由用户提供”——这几乎总是表明您的架构已损坏。为什么要要求用户提供表名?
0赞 Chris 6/30/2021
“还有为什么我不能在问题的开头写'嗨,'而不删除 stackoverflow”——因为它无关紧要并且分散了问题的注意力。我们鼓励高信誉用户将此类内容编辑掉,因此最好首先防止它们被添加。“是不是太友好了?”Stack Overflow 不是一个讨论论坛,而是一个伪装成问答网站的 wiki。我们针对寻找答案的未来用户进行优化,而不是闲聊。
1赞 Chris 6/30/2021
如果没有更多细节,这是不可能的。“某些操作”是什么意思?什么是“任何类型的数据”?许多数据最自然地以一种形式表达,“列”的概念没有多大意义。也许您正在寻找熊猫

答:

0赞 BOBONA 6/30/2021 #1

好吧,这可能不是最佳实践,但我的解决方案只是将表和列名存储为 Table1、Column1 等。我可以单独存储名称。