Python 防止sql注入的方法

Python SQL 注入攻击及其防护措施:编写安全的数据库查询-CSDN博客

sql注入原理浅析_参数化和预编译的区别-CSDN博客

SQL 使用参数化查询如何防止SQL注入攻击|极客教程

(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''; 

 

posted @   你说夕阳很美  阅读(52)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示