在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python與數(shù)據(jù)庫(kù)交互之MySQL是什么

汽車(chē)電子技術(shù) ? 來(lái)源:Python數(shù)據(jù)分析之旅 ? 作者:cauwfq ? 2023-02-24 14:42 ? 次閱讀

一.項(xiàng)目背景

本項(xiàng)目主要是通過(guò)SQL注入案例來(lái)讓大家了解如何防范SQL攻擊,希望對(duì)大家有所幫助

pYYBAGP4W5KAYojtAADHKBDi0M4599.png

二.實(shí)現(xiàn)過(guò)程

》》創(chuàng)建數(shù)據(jù)表
》》插入數(shù)據(jù)
》》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)

注:數(shù)據(jù)庫(kù)中總共有兩條數(shù)據(jù)

pYYBAGP4W8SATC6DAACgt2l3BIM715.png
》》SQL注入

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

總結(jié):
》》cursor.execute(sql%(username,password))通過(guò)字符串拼接生成SQL語(yǔ)句
》》由下圖可知,我們SQL注入已經(jīng)成功,設(shè)想如果是delete語(yǔ)句會(huì)帶來(lái)巨大風(fēng)險(xiǎn)
》》原因:SQL語(yǔ)句是解釋性語(yǔ)言,在拼接SQL語(yǔ)句時(shí),容易被注入惡意的SQL語(yǔ)句

poYBAGP4W-OAbaRkAABSjilYVrk181.png

三.防范SQL注入

預(yù)編譯機(jī)制
》》解釋?zhuān)侯A(yù)編譯SQL語(yǔ)句就是數(shù)據(jù)庫(kù)提前把SQL語(yǔ)句編譯成二進(jìn)制,這樣反復(fù)執(zhí)行同一條SQL語(yǔ)句的效率會(huì)提升
》》原理:SQL語(yǔ)句編譯過(guò)程中,關(guān)鍵字已經(jīng)被解析過(guò)了,所以向編譯后的SQL語(yǔ)句傳入?yún)?shù),都會(huì)被當(dāng)作字符串
處理,數(shù)據(jù)庫(kù)不會(huì)解析其中注入的SQL語(yǔ)句

執(zhí)行過(guò)程圖

poYBAGP4W_6AXddPAAAu21zl4hQ698.png
import mysql.connector


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

總結(jié):
》》cursor.execute(sql,(username,password))通過(guò)預(yù)編譯后二進(jìn)制執(zhí)行
》》由下圖可知,我們防范SQL注入已經(jīng)成功

poYBAGP4XBeAbJWiAABcs0eTZGo703.png
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    775

    瀏覽量

    44254
  • 防范
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    7143
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    python實(shí)戰(zhàn)數(shù)據(jù)庫(kù)MySQL---4操作MySQL

    變量沒(méi)有默認(rèn)值,所以,每個(gè)空都要填寫(xiě)。實(shí)現(xiàn)數(shù)據(jù)庫(kù)之前,需要實(shí)現(xiàn)數(shù)據(jù)MySQL的安裝配置,這些網(wǎng)上到處是例程,大家自行參考。還有要先創(chuàng)建數(shù)據(jù)庫(kù)“test”,可以用
    發(fā)表于 01-09 21:21

    MySQL數(shù)據(jù)庫(kù)python模塊安裝

    ORM:orm(Object Relation Mapping 對(duì)象關(guān)系映射) 定義:把對(duì)象模型映射到MySQL數(shù)據(jù)庫(kù)
    發(fā)表于 08-05 08:41

    Python操作Mysql實(shí)現(xiàn)數(shù)據(jù)庫(kù)腳本的方法概述

    Python操作Mysql數(shù)據(jù)庫(kù)腳本(cmd)
    發(fā)表于 10-08 10:44

    PythonMySQL使用

    Python入門(mén)】43數(shù)據(jù)庫(kù) 使用MySQL
    發(fā)表于 04-07 16:20

    Python連接MySQL數(shù)據(jù)庫(kù)及模塊封裝

    python連接mysql與sql server數(shù)據(jù)庫(kù)及相應(yīng)的模塊封裝
    發(fā)表于 05-01 16:06

    python數(shù)據(jù)庫(kù)交互

    python數(shù)據(jù)庫(kù)交互-sqlalchemy
    發(fā)表于 05-01 14:50

    python如何連接MySql數(shù)據(jù)庫(kù)

    Python入門(mén)(python連接MySql數(shù)據(jù)庫(kù))還能怎么記,大開(kāi)眼界!
    發(fā)表于 06-14 07:48

    如何使用Python操作MySQL數(shù)據(jù)庫(kù)

    使用Python進(jìn)行MySQL庫(kù)主要有三個(gè),Python-MySQL(更熟悉的名字可能是MySQLdb),PyMySQL和SQLAlchemy。
    的頭像 發(fā)表于 12-15 09:51 ?3836次閱讀

    PHP與MYSQL數(shù)據(jù)庫(kù)如何進(jìn)行交互詳細(xì)方法實(shí)驗(yàn)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是PHP與MYSQL數(shù)據(jù)庫(kù)如何進(jìn)行交互詳細(xì)方法實(shí)驗(yàn)說(shuō)明。一、【實(shí)驗(yàn)?zāi)康摹?. 掌握PHP提供的各種函數(shù)與MYSQL數(shù)據(jù)庫(kù)
    發(fā)表于 06-13 16:58 ?13次下載

    華為云數(shù)據(jù)庫(kù)-RDS for MySQL數(shù)據(jù)庫(kù)

    華為云數(shù)據(jù)庫(kù)-RDS for MySQL數(shù)據(jù)庫(kù) 華為云數(shù)據(jù)庫(kù)作為華為云的一款數(shù)據(jù)庫(kù)產(chǎn)品,它主要是以MyS
    的頭像 發(fā)表于 10-27 11:06 ?1569次閱讀

    python讀取數(shù)據(jù)庫(kù)數(shù)據(jù) python查詢(xún)數(shù)據(jù)庫(kù) python數(shù)據(jù)庫(kù)連接

    使用第三方庫(kù),包括MySQLDB、sqlite3、psycopg2等庫(kù)。其中MySQLDB是Python連接MySQL數(shù)據(jù)庫(kù)的一個(gè)重要
    的頭像 發(fā)表于 08-28 17:09 ?1905次閱讀

    MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用

    MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用 MySQL是一種廣泛使用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),被認(rèn)為是最流行和最常見(jiàn)的開(kāi)源數(shù)據(jù)庫(kù)之一。它可以被用于多種不同的應(yīng)
    的頭像 發(fā)表于 08-28 17:15 ?1029次閱讀

    mysql數(shù)據(jù)庫(kù)基礎(chǔ)命令

    MySQL是一個(gè)流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),經(jīng)常用于存儲(chǔ)、管理和操作數(shù)據(jù)。在本文中,我們將詳細(xì)介紹MySQL的基礎(chǔ)命令,并提供與每個(gè)命令相關(guān)的詳細(xì)解釋。 登錄
    的頭像 發(fā)表于 12-06 10:56 ?645次閱讀

    MySQL數(shù)據(jù)庫(kù)的安裝

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

    適用于MySQL和MariaDB的Python連接器:可靠的MySQL數(shù)據(jù)連接器和數(shù)據(jù)庫(kù)

    和 Linux 的 wheel 包分發(fā)。 直接連接 該解決方案使您能夠通過(guò) TCP/IP 建立與 MySQL 或者 MariaDB 數(shù)據(jù)庫(kù)服務(wù)器的直接連接,而無(wú)需數(shù)據(jù)庫(kù)客戶(hù)端庫(kù)。另外
    的頭像 發(fā)表于 01-17 12:18 ?123次閱讀
    適用于<b class='flag-5'>MySQL</b>和MariaDB的<b class='flag-5'>Python</b>連接器:可靠的<b class='flag-5'>MySQL</b><b class='flag-5'>數(shù)據(jù)</b>連接器和<b class='flag-5'>數(shù)據(jù)庫(kù)</b>
    主站蜘蛛池模板: 九九热精品视频在线播放 | 亚洲香蕉久久一区二区三区四区 | 四虎影视在线影院在线观看 | 6080伦理久久精品亚洲 | 国产精品麻豆va在线播放 | 久久久久国产 | 欧美性一区 | 扒开双腿猛进湿润18p | 天天操天天射天天 | 免费一看一级毛片全播放 | 国产午夜在线观看 | 亚洲黄色网址大全 | 日本成人免费在线视频 | 夜夜夜夜夜夜夜猛噜噜噜噜噜噜 | 又大又粗进出白浆直流动态图 | 天堂资源最新版在线官网 | 中韩日欧美电影免费看 | 美女免费视频一区二区三区 | 成人一级视频 | 欧美色网络 | 欧美黄色性 | 综合激情网五月 | 日本免费黄色 | 年轻的护士3在线观看 | 免费亚洲一区 | 四虎影院在线免费观看 | 久久久久久久蜜桃 | 综合激情五月婷婷 | 6080伦理久久精品亚洲 | 能在线观看的一区二区三区 | 经典三级第一页 | 日产乱码免费一卡二卡在线 | 椎名空中文字幕一区二区 | 特级毛片免费视频 | 日本护士69xx00| 色噜噜狠狠色综合欧洲selulu | 欧美黄色片 一级片 | 毛片三级在线观看 | 欧美美女福利视频 | 国产特黄 | 国产呦系列呦交 |