Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“注射安全”;从列表中列所在的表中选择&引用;使用python3和sqlite3_Sql_Python 3.x_Sqlite - Fatal编程技术网

“注射安全”;从列表中列所在的表中选择&引用;使用python3和sqlite3

“注射安全”;从列表中列所在的表中选择&引用;使用python3和sqlite3,sql,python-3.x,sqlite,Sql,Python 3.x,Sqlite,我想从html表单中获取用户输入,并通过将一列与用户输入匹配来进行选择,这样就可以安全地进行注入。但是我希望用户输入是一个逗号分隔的列表。例如,如果列名为“name”,用户输入为“Alice,Bob,Carrol”,则我希望执行查询 从名称所在的表中选择(“Alice”、“Bob”、“Carrol”) 这意味着我有和这个问题一样的问题。 但我当然不想自己做字符串连接来避免注入。同时,由于用户输入中可能有任意数量的逗号,我不能这样做: db.execute('SELECT FROM table W

我想从html表单中获取用户输入,并通过将一列与用户输入匹配来进行选择,这样就可以安全地进行注入。但是我希望用户输入是一个逗号分隔的列表。例如,如果列名为“name”,用户输入为“Alice,Bob,Carrol”,则我希望执行查询

从名称所在的表中选择(“Alice”、“Bob”、“Carrol”)

这意味着我有和这个问题一样的问题。 但我当然不想自己做字符串连接来避免注入。同时,由于用户输入中可能有任意数量的逗号,我不能这样做:

db.execute('SELECT FROM table WHERE name IN(?,?)',user\u input\u splited)

我在寻找一种方法,用手清理或逃避输入,以便能够做类似的事情:

db.execute('SELECT FROM table WHERE name IN?',user\u input\u sanitized)


但是我没有找到它。这里最好的方法是什么?

编写自己的代码来接受用户的输入,
split()
用逗号表示,然后遍历该列表。当您接受每个值时,将其推送到一个数组上,然后将一个文本
“?”
推送到另一个数组上

当然,现在验证您是否至少有一个可接受的值

现在,通过以下方式构造SQL语句:包括,
join(“,”,$qmarks\u array)
自动构造一个类似于
带有适当数量的问号。(如果只有一个元素,则不会插入任何逗号。)然后,以这种方式构造SQL语句后,提供另一个数组作为执行该查询的函数的输入


通过这种方式,您可以将每个值作为一个参数提供,您应该始终这样做,并且允许参数的数量变化。

谢谢。现在我意识到这也是我链接的另一个页面所说的。。。字符串连接不安全,但在本例中不安全。