色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Python與數據庫交互之MySQL是什么

汽車電子技術 ? 來源:Python數據分析之旅 ? 作者:cauwfq ? 2023-02-24 14:42 ? 次閱讀

一.項目背景

本項目主要是通過SQL注入案例來讓大家了解如何防范SQL攻擊,希望對大家有所幫助

pYYBAGP4W5KAYojtAADHKBDi0M4599.png

二.實現過程

》》創建數據表
》》插入數據
》》SQL注入
》》分析原因
mysql> use gzh;
Database changed
mysql> create table t_user(
    -> username varchar(120),
    -> password varchar(200))
    -> engine=innodb default charset=utf8;
Query OK, 0 rows affected, 1 warning (0.13 sec)


mysql> insert into t_user(username,password) values('Tom','1234acd'),('Alice','opqw362');
Query OK, 2 rows affected (0.04 sec)
Records: 2  Duplicates: 0  Warnings: 0


mysql> select * from t_user;
+----------+----------+
| username | password |
+----------+----------+
| Tom      | 1234acd  |
| Alice    | opqw362  |
+----------+----------+
2 rows in set (0.00 sec)

注:數據庫中總共有兩條數據

pYYBAGP4W8SATC6DAACgt2l3BIM715.png
》》SQL注入

import mysql.connector
#配置數據庫參數
config={
    "host":"localhost",
    "port":3306,
    "user":"root",
    "password":"253611",
    "database":"gzh",
    "auth_plugin":"mysql_native_password"
}
#初始化connect對象
con=mysql.connector.connect(**config)
#定義username
username="1 OR 1=1"
#定義password
password="1 OR 1=1"
#書寫sql語句,AES_DECRYPT為解密函數
sql="SELECT COUNT(*) FROM t_user WHERE username=%s " 
    "AND AES_DECRYPT(UNHEX(password),'HelloWorld')=%s";
#初始化游標
cursor=con.cursor()
#執行SQL語句,字符串拼接生成
cursor.execute(sql%(username,password))
#輸出數據
print("全部數據條數為:",cursor.fetchone()[0])
#關閉鏈接
con.close()

總結:
》》cursor.execute(sql%(username,password))通過字符串拼接生成SQL語句
》》由下圖可知,我們SQL注入已經成功,設想如果是delete語句會帶來巨大風險
》》原因:SQL語句是解釋性語言,在拼接SQL語句時,容易被注入惡意的SQL語句

poYBAGP4W-OAbaRkAABSjilYVrk181.png

三.防范SQL注入

預編譯機制
》》解釋:預編譯SQL語句就是數據庫提前把SQL語句編譯成二進制,這樣反復執行同一條SQL語句的效率會提升
》》原理:SQL語句編譯過程中,關鍵字已經被解析過了,所以向編譯后的SQL語句傳入參數,都會被當作字符串
處理,數據庫不會解析其中注入的SQL語句

執行過程圖

poYBAGP4W_6AXddPAAAu21zl4hQ698.png
import mysql.connector


config={
    "host":"localhost",
    "port":3306,
    "user":"root",
    "password":"253611",
    "database":"gzh",
    "auth_plugin":"mysql_native_password"
}
#初始化connect對象
con=mysql.connector.connect(**config)
#定義username
username="1 OR 1=1"
#定義password
password="1 OR 1=1"
#書寫sql語句
sql="SELECT COUNT(*) FROM t_user WHERE username=%s " 
    "AND AES_DECRYPT(UNHEX(password),'HelloWorld')=%s";
#初始化游標
cursor=con.cursor()
#執行SQL語句,這里sql為預編譯后的語句
cursor.execute(sql,(username,password))
#輸出數據
print("全部數據條數為:",cursor.fetchone()[0])
#關閉鏈接
con.close()

總結:
》》cursor.execute(sql,(username,password))通過預編譯后二進制執行
》》由下圖可知,我們防范SQL注入已經成功

poYBAGP4XBeAbJWiAABcs0eTZGo703.png
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • SQL
    SQL
    +關注

    關注

    1

    文章

    773

    瀏覽量

    44219
  • 防范
    +關注

    關注

    0

    文章

    4

    瀏覽量

    7143
收藏 人收藏

    評論

    相關推薦

    python實戰數據庫MySQL---4操作MySQL

    變量沒有默認值,所以,每個空都要填寫。實現數據庫之前,需要實現數據MySQL的安裝配置,這些網上到處是例程,大家自行參考。還有要先創建數據庫“test”,可以用
    發表于 01-09 21:21

    MySQL數據庫python模塊安裝

    ORM:orm(Object Relation Mapping 對象關系映射) 定義:把對象模型映射到MySQL數據庫
    發表于 08-05 08:41

    Python操作Mysql實現數據庫腳本的方法概述

    Python操作Mysql數據庫腳本(cmd)
    發表于 10-08 10:44

    PythonMySQL使用

    Python入門】43數據庫 使用MySQL
    發表于 04-07 16:20

    Python連接MySQL數據庫及模塊封裝

    python連接mysql與sql server數據庫及相應的模塊封裝
    發表于 05-01 16:06

    python數據庫交互

    python數據庫交互-sqlalchemy
    發表于 05-01 14:50

    python如何連接MySql數據庫

    Python入門(python連接MySql數據庫)還能怎么記,大開眼界!
    發表于 06-14 07:48

    如何使用Python操作MySQL數據庫

    使用Python進行MySQL主要有三個,Python-MySQL(更熟悉的名字可能是MySQLdb),PyMySQL和SQLAlchemy。
    的頭像 發表于 12-15 09:51 ?3819次閱讀

    PHP與MYSQL數據庫如何進行交互詳細方法實驗說明

    本文檔的主要內容詳細介紹的是PHP與MYSQL數據庫如何進行交互詳細方法實驗說明。一、【實驗目的】1. 掌握PHP提供的各種函數與MYSQL數據庫
    發表于 06-13 16:58 ?13次下載

    華為云數據庫-RDS for MySQL數據庫

    華為云數據庫-RDS for MySQL數據庫 華為云數據庫作為華為云的一款數據庫產品,它主要是以MyS
    的頭像 發表于 10-27 11:06 ?1562次閱讀

    python讀取數據庫數據 python查詢數據庫 python數據庫連接

    使用第三方,包括MySQLDB、sqlite3、psycopg2等。其中MySQLDB是Python連接MySQL數據庫的一個重要
    的頭像 發表于 08-28 17:09 ?1883次閱讀

    MySQL數據庫管理與應用

    MySQL數據庫管理與應用 MySQL是一種廣泛使用的關系型數據庫管理系統,被認為是最流行和最常見的開源數據庫之一。它可以被用于多種不同的應
    的頭像 發表于 08-28 17:15 ?1012次閱讀

    mysql數據庫基礎命令

    MySQL是一個流行的關系型數據庫管理系統,經常用于存儲、管理和操作數據。在本文中,我們將詳細介紹MySQL的基礎命令,并提供與每個命令相關的詳細解釋。 登錄
    的頭像 發表于 12-06 10:56 ?624次閱讀

    MySQL數據庫的安裝

    MySQL數據庫的安裝 【一】各種數據庫的端口 MySQL :3306 Redis :6379 MongoDB :27017 Django :8000 flask :5000 【二】
    的頭像 發表于 01-14 11:25 ?115次閱讀
    <b class='flag-5'>MySQL</b><b class='flag-5'>數據庫</b>的安裝

    適用于MySQL和MariaDB的Python連接器:可靠的MySQL數據連接器和數據庫

    和 Linux 的 wheel 包分發。 直接連接 該解決方案使您能夠通過 TCP/IP 建立與 MySQL 或者 MariaDB 數據庫服務器的直接連接,而無需數據庫客戶端。另外
    的頭像 發表于 01-17 12:18 ?103次閱讀
    適用于<b class='flag-5'>MySQL</b>和MariaDB的<b class='flag-5'>Python</b>連接器:可靠的<b class='flag-5'>MySQL</b><b class='flag-5'>數據</b>連接器和<b class='flag-5'>數據庫</b>
    主站蜘蛛池模板: 操老太太的逼 | 窝窝影院午夜看片毛片 | 99久久精品6在线播放 | 久久777国产线看观看精品卜 | 国色精品VA在线观看免费视频 | 兰桂坊人成社区亚洲精品 | 亚洲欧美中文在线一区 | 嫩草影院地址一二三 | 国精产品一区一区三区有限在线 | 韩剧19禁啪啪无遮挡大尺度 | 久久亚洲国产精品亚洲 | 一本色道久久综合一区 | 俄罗斯17vidio | xx在线观看 | 综合激情区视频一区视频二区 | 天天看学生视频 | 亚洲人成在线播放网站岛国 | 亚洲精品国产精麻豆久久99 | 久久99热只有频精品 | qvod在线观看 | china年轻小帅脸直播飞机 | 午夜国产羞羞视频免费网站 | 友田真希息与子中文字幕 | 久久人妻AV一区二区软件 | 亚洲精品国产高清不卡在线 | 在线中文高清资源免费观看 | 一个人在线观看免费高清视频在线观看 | gogogo免费视频观看 | 视频专区亚洲欧美日韩 | 日韩精品专区在线影院重磅 | 亚洲欧美成人 | 亚洲综合国产精品 | 国产在线精品视频免费观看 | 精品久久电影网 | 欧美色偷偷亚洲天堂bt | 国产成人女人视频在线观看 | 黄色天堂在线 | 热热久久这里只有精品 | 毛片无码免费无码播放 | 国产精品免费视频能看 | 好大好硬好湿再深一点网站 |