为什么在psycopg查询中将“普通字符串格式”用于表/字段名称?

时间:2014-09-17 18:44:00

标签: sql psycopg2

从正确传递SQL参数的文档到psycopg2:

"只应通过此方法绑定变量值:它不应用于设置表或字段名称。对于这些元素,应在运行execute()之前使用普通的字符串格式。"

http://initd.org/psycopg/docs/usage.html#passing-parameters-to-sql-queries

这是为什么?为什么设置字段名称与设置值没有相同的SQL注入问题?

1 个答案:

答案 0 :(得分:0)

因为您通常不会从用户那里收到表或字段的名称,所以您可以自己在代码中指定它们。如果根据从用户输入获得的值生成请求,那么应该进行某种转义以避免SQL注入。