Python 防止sql注入的方法
Python SQL 注入攻击及其防护措施:编写安全的数据库查询-CSDN博客
(4 封私信 / 80 条消息) 为什么参数化SQL查询可以防止SQL注入? - 知乎
关键字:参数化查询
代码片段
def execute(self, query, vars=None): # real signature unknown; restored from __doc__ """ execute(query, vars=None) -- Execute query with bound vars. """ pass # 1 select_sql = f"select * from tb_admin where role = '{role_id}';" cursor.execute(select_sql) # 2 select_sql = f"select * from tb_admin where role = %s;" cursor.execute(select_sql, (role_id, ))
代码1 存在sql注入风险
代码2 不存在风险
===========
分析(根据上述文章链接做的小结,会有信息丢失,仅供参考):
输入参数 1' or '1'='1
代码2使用了参数化查询,会预编译,把输入参数包裹成一个字符串;代码1不会
用sql解释
代码1:select * from tb_admin where role = '1' or '1'='1'; 所以会有风险
代码2:select * from tb_admin where role = "1' or '1'='1'';
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~