欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

pymysql解決sql注入問題的示例分析

這篇文章將為大家詳細(xì)講解有關(guān)pyMySQL解決sql注入問題的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、撫順縣網(wǎng)站維護(hù)、網(wǎng)站推廣。

1. SQL 注入

SQL 注入是非常常見的一種網(wǎng)絡(luò)攻擊方式,主要是通過參數(shù)來讓 mysql 執(zhí)行 sql 語句時進(jìn)行預(yù)期之外的操作。

即:因?yàn)閭魅氲膮?shù)改變SQL的語義,變成了其他命令,從而操作了數(shù)據(jù)庫。

產(chǎn)生原因:SQL語句使用了動態(tài)拼接的方式。

例如,下面這段代碼通過獲取用戶信息來校驗(yàn)用戶權(quán)限:

import pymysql

sql = 'SELECT count(*) as count FROM user WHERE id = ' + str(input['id']) + ' AND password = "' + input['password'] + '"'
cursor = dbclient.cursor(pymysql.cursors.DictCursor)
cursor.execute(sql)
count = cursor.fetchone()
if count is not None and count['count'] > 0:
 print('登陸成功')

但是,如果傳入?yún)?shù)是:

input['id'] = '2 or 1=1'

你會發(fā)現(xiàn),用戶能夠直接登錄到系統(tǒng)中,因?yàn)樵?sql 語句的判斷條件被 or 短路成為了永遠(yuǎn)正確的語句。
這里僅僅是舉一個例子,事實(shí)上,sql 注入的方式還有很多種,這里不深入介紹了。

總之,只要是通過用戶輸入數(shù)據(jù)來拼接 sql 語句,就必須在第一時間考慮如何避免 SQL 注入問題。

那么,如何防止 SQL 注入呢?

2. 預(yù)防 SQL 注入 – pymysql 參數(shù)化語句

pymysql 的 execute 支持參數(shù)化 sql,通過占位符 %s 配合參數(shù)就可以實(shí)現(xiàn) sql 注入問題的避免。

import pymysql

sql = 'SELECT count(*) as count FROM user WHERE id = %s AND password = %s'
valus = [input['id'], input['password']]
cursor = dbclient.cursor(pymysql.cursors.DictCursor)
cursor.execute(sql, values)
count = cursor.fetchone()
if count is not None and count['count'] > 0:
 print('登陸成功')

這樣參數(shù)化的方式,讓 mysql 通過預(yù)處理的方式避免了 sql 注入的存在。

需要注意的是,不要因?yàn)閰?shù)是其他類型而換掉 %s,pymysql 的占位符并不是 python 的通用占位符。

同時,也不要因?yàn)閰?shù)是 string 就在 %s 兩邊加引號,mysql 會自動去處理。

3. 預(yù)防 SQL 注入 – mysql 存儲過程

數(shù)據(jù)庫存儲過程是 mysql 的一種高級用法,但是一般來說,并不建議使用數(shù)據(jù)庫的存儲過程。

主要原因是:

  • 存儲過程的語法與普通 SQL 語句語法相差太大,增加維護(hù)成本

  • 存儲過程在各數(shù)據(jù)庫間不通用且差別較大,給數(shù)據(jù)庫的移植和擴(kuò)展帶來困難

  • 編寫困難,數(shù)據(jù)庫腳本語言使用起來還是很不方便的,包括很多數(shù)據(jù)結(jié)構(gòu)的缺失,讓很多事情做起來很困難

  • 調(diào)試?yán)щy,雖然有一些功能強(qiáng)大的 IDE 提供了數(shù)據(jù)庫存儲過程的調(diào)試功能,但是通常你需要同時在數(shù)據(jù)庫層面上和業(yè)務(wù)中同時進(jìn)行調(diào)試,兩處調(diào)試極為不便

  • 業(yè)務(wù)耦合,編寫存儲過程通常是需要在其中放入部分業(yè)務(wù)邏輯,這使得業(yè)務(wù)分散在數(shù)據(jù)層,業(yè)務(wù)層與數(shù)據(jù)層的耦合對于項(xiàng)目維護(hù)和擴(kuò)展都會帶來極大地不便。

但是,雖然不建議使用存儲過程,但是畢竟可以依賴他實(shí)現(xiàn)各種跨語言的 sql 注入預(yù)防,在復(fù)雜的場景下還是有其使用價值的。(以后需要用再去詳細(xì)學(xué),這里只作簡單介紹)

3.1. 存儲過程編寫

delimiter \DROP PROCEDURE IF EXISTS proc_sql \CREATE PROCEDURE proc_sql (
 in nid1 INT,
 in nid2 INT,
 in callsql VARCHAR(255)
)
BEGIN
 set @nid1 = nid1;
 set @nid2 = nid2;
 set @callsql = callsql;
 PREPARE myprod FROM @callsql;
 -- PREPARE prod FROM 'select * from tb2 where nid>? and nid<?'; 傳入的值為字符串,?為占位符
 -- 用@p1,和@p2填充占位符
 EXECUTE myprod USING @nid1,@nid2;
 DEALLOCATE prepare myprod;

END\delimiter ;

3.2. pymsql 中調(diào)用

import pymysql

cursor = conn.cursor()
mysql="SELECT * FROM user where nid > ? and nid < ?"
cursor.callproc('proc_sql', args=(11, 15, mysql))
rows = cursor.fetchall()
conn.commit()

關(guān)于“pymysql解決sql注入問題的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

網(wǎng)頁標(biāo)題:pymysql解決sql注入問題的示例分析
文章分享:http://aaarwkj.com/article34/igdose.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、網(wǎng)站導(dǎo)航、品牌網(wǎng)站建設(shè)、軟件開發(fā)網(wǎng)站改版、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
正在播放老肥熟妇露脸| 欧美黄色一区二区三区精品 | 性色av人妻中文一区二区| 日本精品人妻一区二区三区蜜桃| av天堂官网在线人妻| 欧美精品激情在线不卡| 日本东京热在线免费观看| 欧美国产成人精品一区| 国产精品亚洲伦理在线| 亚洲国产理论片在线观看| 亚洲av午夜福利麻豆av | 亚洲精品aa片在线观看国产 | 亚洲欧美精品成人一区| 久久夜色噜噜噜av一区| 亚洲乱码在线中文字幕| 91综合午夜精品福利| 日韩在线啊啊啊的视频| 精品国产不卡在线观看| 伊人蕉影院久亚洲高清| 真实国产熟女一区二区三区| 欧美日韩精品在线二区| 黄片视频免费在线播放大全| 中国成熟女人毛茸茸视频| 欧美日韩亚洲精品内裤| 亚洲欧美日韩在线第三页| 国产精品va在线观看入口| 日韩av专区在线免费观看| 亚洲日本精品一区二区三区| 欧美日本在线区一区二| 日韩不卡在线观看免费| 亚洲国产精品一区二区电影| 超碰91人人在线青青草| 亚洲精品理论片在线观看| 国产日韩欧美老年人激情| 中文字幕国产精品专区| 国产亚洲超级97免费视频| 91亚洲婷婷国产综合精品| 一区二区不卡日韩av| 夜夜春国产精品不卡一区二区| 成人激情在线免费电影| 亚洲华人在线免费视频|