首页 > 数据库 >Python 防止sql注入的方法

Python 防止sql注入的方法

时间:2024-10-29 17:42:58浏览次数:5  
标签:Python 代码 sql role SQL 参数 select 注入

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

 

标签:Python,代码,sql,role,SQL,参数,select,注入
From: https://www.cnblogs.com/daizichuan/p/18514038

相关文章

  • python 读取文件的内容
    在Python中,读取文件内容是一个基础且常见的操作。以下是一些常用的方法来读取文件内容:使用内建的open()函数和read()方法#打开文件withopen('example.txt','r')asfile:#读取文件内容content=file.read()#打印文件内容print(content)这里使用了wit......
  • Ubuntu虚拟机&conda虚拟环境运行和打包引入SimNIBS软件包的python项目文件
    项目背景:项目是python代码写的,其中有一个模块SimNIBS不能通过pip安装,需要自己下载软件包,在Ubuntu虚拟机的虚拟环境中运行和打包。下面是整个流程和遇到的一些问题,写下来做个记录。(默认此时SimNIBS已经安装好了,还没安装好的话,参见文章Ubuntu虚拟机安装医学影像软件包SimNIBS及报......
  • 记一个mysql 主从切换的实验记录
    一、前言msyql切换主库一般都是用高可用方案,例如MHA,MGR,高可用方案可以自动切主,但是MHA的failover功能无法把旧主自动挂到新主上作为从库使用,所以发生failover后,还需要手动把旧的主库作为备库挂到新的主库上。此时常规操作就是备份新主库,然后应用到旧主库上,然后再重新搭建主从。......
  • 银河麒麟系统V10安装mysql5.7
    1、cat /proc/version查看系统版本2、官网(https://dev.mysql.com/downloads/mysql/)下载mysql 3、在服务器直接下载压缩包wgethttps://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar4、创建upload目录存储压缩包5、cd/uploa......
  • python3 堆相关函数的使用
    215.数组中的第K个最大元素classSolution:deffindKthLargest(self,nums:List[int],k:int)->int:ans=[]foriinrange(k):heapq.heappush(ans,nums[i])foriinrange(k,len(nums)):ifnums[i]>ans[......
  • 软件安全领域 5 大注入攻击
    注入攻击指的是针对注入漏洞的任何类型的攻击——注入漏洞是一大类网络安全漏洞,其中包括几个严重的应用程序安全风险。尽管攻击向量种类繁多,但注入攻击的共同点是攻击者能够通过未经验证的用户输入将有效负载插入已执行的应用程序代码中。根据具体的漏洞和攻击目标,注入可能涉及数......
  • [Azure] 使用 Cosmos DB for NoSQL 的 API
    什么是AzureCosmosDBforNoSQL?AzureCosmosDBforNoSQL是用于处理文档数据模型的原生非关系服务。它可以使用灵活的架构任意存储原生JSON文档。数据会自动编制索引,并可使用专为JSON数据设计的SQL查询语言进行查询。使用适用于常用框架(如.NET、Python、Java和Node......
  • Linux安装mysql【超详细】
    一、下载安装包1、查看是否已经安装了MySQLrpm-qa|grepmysql2、查看系统位数getconfLONG_BIT3、下载MySQLMySQL官网地址4、也可以直接在服务器执行指令下载,但是下载速度比较慢。还是自己下载好拷贝过来比较快。wgethttps://dev.mysql.com/get/Downloads/my......
  • MySQL的where条件字符串区分大小写的问题
    https://blog.csdn.net/qq_45783259/article/details/132231226MySQL的where条件字符串区分大小写的问题在MySQL的默认情况下字符集采用的是utf8mb4,排序规则是utf8mb4_general_ci,这种情况下where条件遇到字符串是不区分大小写的。比如以下两条SQL语句查询出来的结果都是一样的,即......
  • C++连接SqlServer
    C++连接SqlServer连接外加查询sqlConnection.h#pragmaonce#ifndefSQLCONNECTION_H#defineSQLCONNECTION_H#include<iostream>#include<windows.h>#include<sql.h>#include<sqlext.h>#include<fstream>#include<string>//......