python execute() 使用%s 拼接sql 避免sql注入攻击 好于.format

1 execute(参数一:sql 语句)

# 锁定当前查询结果行
cursor.execute("SELECT high, low, vol FROM table_name WHERE symbol = %s FOR UPDATE;"% (symbol,))

2 .format()

cursor.execute("SELECT high, low, vol FROM table_name WHERE symbol = {} FOR UPDATE;".format(symbol)) 

3 结论

使用 .format() 方法拼接 SQL 语句确实能够解决一些 SQL 注入攻击问题,
但并不能完全避免 SQL 注入攻击。
原因是,.format() 方法并没有对参数进行任何的安全检查和过滤,
如果参数中包含某些 SQL 语句关键字或特殊字符,仍然可能会导致 SQL 注入攻击。

相比之下,使用占位符(如 %s、? 或 :name)的方式可以更好地避免 SQL 注入攻击,
因为这些占位符会被数据库驱动程序自动转义和过滤。
因此,使用占位符的 SQL 查询语句比手动拼接 SQL 语句和参数更加安全。

猜你喜欢

转载自blog.csdn.net/tenc1239/article/details/132838374