我有一个简单的应用程序,它使用 pandas 将 csv 文件加载到 DataFrame 中,并继续使用 pandasql 对其执行 sql 操作。其中一些操作来自用户输入。为了测试,我有这条线
tempdb = sqldf('SELECT * from eventsdb_subset WHERE %s' % filterstring,locals())
其中 filterstring 是原始用户输入。这显然是一个sql注入漏洞。
通常在使用这样的数据库时,您会清理用户输入,但在这种情况下,有必要这样做吗?因为 DataFrame 只存在于内存中,所使用的文件都是本地的,并且实际上对磁盘上的 csv 文件没有做任何事情,如果简单地忽略该查询的输出就无法解决未经处理的 DB 查询会有什么危害?
编辑:毫无疑问,这代表了一个 SQL 注入漏洞。我的问题是:如果数据库只存在于本地 RAM 中,我为什么要关心?