Python PostgreSQL复制SQL注入
我使用PostgreSQL 11 COPY命令将大型CSV导入Python数据库,如下所示:Python PostgreSQL复制SQL注入,python,postgresql,sql-injection,Python,Postgresql,Sql Injection,我使用PostgreSQL 11 COPY命令将大型CSV导入Python数据库,如下所示: 从STDIN复制“ns.”表(“col1”、“col2”),CSV头分隔符为“,” 我没有找到任何最近的信息,如果这个操作在SQL注入攻击方面是安全的,或者我应该手动检查CSV并转义文件中的每个值(这是一个非常繁重的操作) 谢谢 使用此命令不存在SQL注入的危险 如果用户提供的数据不正确,则表中的数据不正确,或者最坏的情况下,可能会因为文件不正确或违反了约束而出错 但是没有办法破坏执行语句的安全性,因为
从STDIN复制“ns.”表(“col1”、“col2”),CSV头分隔符为“,”
我没有找到任何最近的信息,如果这个操作在SQL注入攻击方面是安全的,或者我应该手动检查CSV并转义文件中的每个值(这是一个非常繁重的操作)
谢谢 使用此命令不存在SQL注入的危险 如果用户提供的数据不正确,则表中的数据不正确,或者最坏的情况下,可能会因为文件不正确或违反了约束而出错
但是没有办法破坏执行语句的安全性,因为用户输入的任何内容都不会成为SQL语句的一部分。使用
COPY
,SQL语句和数据之间有着明显的区别。除了[CVE-2019-9193]()。@adriankeraver这是不相关的,因为这里有COPY。。。从STDIN
。您引用的不是SQL注入,启动也不是安全问题。是的,但您没有指定COPY。。。在STDIN中,您对COPY
做了一个笼统的陈述。这也是一个安全问题,它只是一个文件化的问题。基本上超级用户就是超级用户,所以在分配它们时要小心。由于程序
可能是运行SQL
的东西,因此它可能是SQL注入
,而且您正在使用SQL
发动攻击。我个人认为整件事都被夸大了,但不提供一个警告也不好。来吧。我写了“用这个命令”,意思是问题中的陈述。此外,这与SQL注入无关。来自用户的是COPY
数据,而不是COPY
语句。或者您在问题的任何地方都看到了动态SQL吗?您能说明如何在python的上下文中使用它吗?虽然它本身并不危险,但肯定会有危险的方法来做。@jjanes,curs.copy\u expert(sql='copy…',file=file\u obj)
(psycopg2
cursor)应该是安全的。如果有人可以将\n\\.\n
注入到文件\u obj中,那么他们可以获得之后要忽略的所有数据。但他们无法运行任意命令。