“注射安全”;从列表中列所在的表中选择&引用;使用python3和sqlite3
我想从html表单中获取用户输入,并通过将一列与用户输入匹配来进行选择,这样就可以安全地进行注入。但是我希望用户输入是一个逗号分隔的列表。例如,如果列名为“name”,用户输入为“Alice,Bob,Carrol”,则我希望执行查询“注射安全”;从列表中列所在的表中选择&引用;使用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
从名称所在的表中选择(“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语句后,提供另一个数组作为执行该查询的函数的输入
通过这种方式,您可以将每个值作为一个参数提供,您应该始终这样做,并且允许参数的数量变化。谢谢。现在我意识到这也是我链接的另一个页面所说的。。。字符串连接不安全,但在本例中不安全。