相关文章推荐
儒雅的皮带  ·  检查 PHP 中是否存在某个属性-阿里云开发者社区·  7 小时前    · 
鬼畜的领结  ·  Content is not ...·  10 月前    · 
干练的羽毛球  ·  在使用Gson解析JSON数据时,如何避免空 ...·  1 年前    · 
睿智的小蝌蚪  ·  Android网络编程(二)HttpClie ...·  1 年前    · 
文武双全的自行车  ·  如何提取cmip6指定区域的气温数据? - 知乎·  1 年前    · 
灰常酷的蘑菇  ·  Python深度学习12——Keras实现注 ...·  2 年前    · 
Code  ›  Python进阶——防止SQL注入多参数-阿里云开发者社区
阿里金融 sql注入 python 阿里
https://developer.aliyun.com/article/877111
还单身的烈马
1 年前
产品
热门产品
计算
容器
存储
网络与CDN
安全
中间件
数据库
大数据计算
人工智能与机器学习
媒体服务
企业服务与云通信
物联网
Serverless
开发工具
迁移与运维管理
专有云
解决方案
文档与社区
免费试用
定价
云市场
合作伙伴
支持与服务
了解阿里云
产品
精选产品
云服务器 ECS
容器服务 Kubernetes 版 ACK
对象存储 OSS
负载均衡 SLB
云数据库 RDS MySQL 版
云原生大数据计算服务 MaxCompute
大数据开发治理平台 DataWorks
机器学习平台 PAI
日志服务 SLS
Web应用防火墙 WAF
视频点播
域名
CDN
短信服务
云效 DevOps
新品发布
数据资源平台
云数据传输
转发路由器 TR
配额中心
应用诊断分析平台 ATP
多云成本运营
云控制 API
场景金融链接器
图计算服务 Graph Compute
运维事件中心
文档智能
智算服务 PAI-灵骏
5G互联平台
营销引擎云码
无影云应用
开发者社区
个人
开发者社区
个人
首页
探索云世界
新手上云
云上应用构建 云上数据管理 云上探索人工智能
云计算
弹性计算 无影 存储 网络 倚天
云原生
容器 serverless 中间件 微服务 可观测 消息队列
数据库
关系型数据库 NoSQL数据库 数据仓库 数据管理工具 PolarDB开源 向量数据库
热门
Modelscope模型即服务 弹性计算 云原生 数据库 物联网 云效DevOps 龙蜥操作系统 平头哥 钉钉开放平台
大数据
大数据计算 实时数仓Hologres 实时计算Flink E-MapReduce DataWorks Elasticsearch 机器学习平台PAI 智能搜索推荐
人工智能
机器学习平台PAI 视觉智能开放平台 智能语音交互 自然语言处理 多模态模型 pythonsdk 通用模型
开发与运维
云效DevOps 钉钉宜搭 支持服务 镜像站 码上公益
问产品
动手实践
考认证
TIANCHI大赛
活动广场
任务中心 飞天Club技术沙龙 训练营 话题 开发者评测 乘风者计划 阿里云MVP 直播
下载
镜像站 技术资料 插件
开发者社区
个人
开发者社区
个人
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。 预防SQL注入,要使用pymysql 参数化语句。pymysql 的 execute 支持参数化 sql,通过占位符 %s 配合参数就可以实现 sql 注入问题的避免。 这样参数化的方式,让 mysql 通过预处理的方式避免了 sql 注入的存在。 需要注意的是,不要因为参数是其他类型而换掉 %s,pymysql 的占位符并不是 python 的通用占位符。 同时,也不要因为参数是 string 就在 %s 两边加引号,mysql 会自动去处理。 防止多个参数要使用%s,%s,%s来实现

概述

预防SQL注入,要使用pymysql 参数化语句。pymysql 的 execute 支持参数化 sql,通过占位符 %s 配合参数就可以实现 sql 注入问题的避免。

这样参数化的方式,让 mysql 通过预处理的方式避免了 sql 注入的存在。

需要注意的是,不要因为参数是其他类型而换掉 %s,pymysql 的占位符并不是 python 的通用占位符。

同时,也不要因为参数是 string 就在 %s 两边加引号,mysql 会自动去处理。

防止多个参数要使用%s,%s,%s来实现


代码实现

# 1. 导包
import pymysql
if __name__ == '__main__':
    # 2. 创建连接对象
    # connect = Connection = Connect 本质上是一个函数,使用这三个里面的任何一个函数都可以创建一个连接对象
    # 1. host : 服务器的主机地址
    # 2. port: mysql数据库的端口号
    # 3. user: 用户名
    # 4. password:密码
    # 5. database: 操作的数据库
    # 6. charset: 操作数据库使用的编码格式
    conn = pymysql.connect(host="localhost",
                           port=3306,
                           user="root",
                           password="mysql123456",
                           database="python",
                           charset="utf8")
    # 3. 获取游标, 目的就是要执行sql语句
    cursor = conn.cursor()
    # 准备sql, 使用防止sql注入的sql语句, %s是sql语句的参数和字符串里面的%s不一样,不要加上引号
    sql = "insert into students(name, age, gender, c_id) values(%s, %s, %s, %s)"
    print(sql)
        # 4. 执行sql语句
        # 1. sql
        # 2. 执行sql语句的传入的参数,参数类型可以是元组,列表,字典
        cursor.execute(sql,["司马懿", 76, '男', 3]);
        conn.commit()
    except Exception as e:
        conn.rollback()
    finally:
        # 5. 关闭游标
        cursor.close()
        # 6. 关闭连接
        conn.close()
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
 
推荐文章
儒雅的皮带  ·  检查 PHP 中是否存在某个属性-阿里云开发者社区
7 小时前
鬼畜的领结  ·  Content is not allowed in prolog.解决-CSDN博客
10 月前
干练的羽毛球  ·  在使用Gson解析JSON数据时,如何避免空指针异常?
1 年前
睿智的小蝌蚪  ·  Android网络编程(二)HttpClient与HttpURLConnection-CSDN博客
1 年前
文武双全的自行车  ·  如何提取cmip6指定区域的气温数据? - 知乎
1 年前
灰常酷的蘑菇  ·  Python深度学习12——Keras实现注意力机制(self-attention)中文的文本情感分类(详细注释)_keras注意力机制_阡之尘埃的博客-CSDN博客
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号