pythonsql注入_python使用mysql,sql注入問題

python使用mysql

importpymysql

conn=pymysql.connect(

host= '127.0.0.1', #連接地址

port = 3306, #端口

user = root, #用戶名

password = '', #密碼

database = 'db', #庫名稱

charset = 'utf8' #編碼格式 utf8,不是utf-8

)

cursor= conn.cursor(pymsql.cursors.DictCursor) #產生一個游標,以字典的形式返回查詢出來的數據,鍵是表的字段,值是表字段對應的信息

sql = select * from userinfo #寫sql語句

cursor.execute(sql) #執行傳入的sql語句

print(cursor.fetchone()) #拿到表中一條數據

print(cursor.fetchone())print(cursor.fetchone())

cursor.scroll(1,'absolute') #absolute絕對移動,前面數字寫幾,就相對于起始位置向后移動幾位

cursor.srcoll(1,'relative') #relative相對移動,前面寫幾,就相對于當前位置向后移動幾位

print(cursor.fetchall()) #拿到表中所有的數據

sql注入問題

conn =pymysql.connect(

host= '127.0.0.1',

port= 3306,

user=root,

password= '',

database= 'db',

charset= 'utf8')

cursor=conn.cursor(pymsql.cursors.DictCursor)

username= input('請輸入用戶名:')

password= input('請輸入密碼:')

sql= "select * from userinfo where name = '%s' and password ='%s'" %s(username, password)

res=cursor.execute(sql)ifres:print(cursor.fetchall())else:print('賬號或密碼錯誤')

我們用上述一段代碼詮釋一下sql注入的問題, 當我們輸入正確的賬號密碼的時候,發現可以正常打印字段數據,當我們輸入錯誤賬號或密碼時,就顯示賬號密碼錯誤

1636480-20190822211118555-458907377.png

1636480-20190822211130076-1419819438.png

以我們只知道用戶名為例

1636480-20190822211537631-1078009674.png

竟然查到了用戶的所有信息,這個是根據 -- 注釋做到的sql注入

假如我們賬號密碼都不知道,那么如何用sql注入去獲取網站的用戶信息呢

1636480-20190822211708665-1556336257.png

在我們對賬號密碼毫不知情的情況下,我們使用or判斷條件的成立,再加上 --注釋,可以獲取到網站所有的用戶信息

根據以上兩個問題我們應該如何解決呢?

conn =pymysql.connect(

host= '127.0.0.1',

port= 3306,

user=root,

password= '',

database= 'db',

charset= 'utf8')

cursor=conn.cursor(pymsql.cursors.DictCursor)

username= input('請輸入用戶名:')

password= input('請輸入密碼:')

sql= "select * from userinfo where name = %s and password =%s"res=cursor.execute(sql,(username,password)) # execute可以自動識別sql語句中的%s,它可以幫助你過濾特殊的字符,避免sql注入的問題ifres:print(cursor.fetchall())else:print('賬號或密碼錯誤')

總結:

1.sql注入,就是利用注釋等具有特殊意義的符號,來完成的

2.后續寫sql語句時,不要手動去拼接關鍵性的數據,而是交由execute去拼接

python對mysql的增,改,刪操作

importpymysql

conn=pymysql.connect(

host= '127.0.0.1',

port= 3306,

user=root,

password= '',

database= 'db',

charset= 'utf8')

cursor=conn.cursor(pymsql.cursors.DictCursor)

sql= "insert into user(name,password) values('wu','123')" #插入,增

cursor.execute(sql)

conn.commit() 在新增時要寫conn.commit()

importpymysql

conn=pymysql.connect(

host= '127.0.0.1',

port= 3306,

user=root,

password= '',

database= 'db',

charset= 'utf8')

cursor=conn.cursor(pymsql.cursors.DictCursor)

sql= "update user set name='qazqaz' where id = 1" #修改

cursor.execute(sql)

conn.commit() #在修改時要寫conn.commit()

importpymysql

conn=pymysql.connect(

host= '127.0.0.1',

port= 3306,

user=root,

password= '',

database= 'db',

charset= 'utf8')

cursor=conn.cursor(pymsql.cursors.DictCursor)

sql= "delete from user where id = 1" #刪除

cursor.execute(sql)

conn.commit()#在刪除時要寫conn.commit()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534014.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534014.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534014.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

h5優秀控件_H5前端學習的js插件大全,基本包含了大部分的前端最前沿的js插件和庫。...

布局SuperEmbed.js - 是一個Javascript庫,可檢測出網頁上的內嵌視頻并使他們能夠變成響應式元素。demoScrollReveal - ScrollReveal插件使用戶能夠無比輕松地創建桌面和移動瀏覽器的網頁滾動動畫。demoBricks.js - 是一款超快的用于固定寬度元素的“磚石”布局生成器…

js 控制鼠標_JS逆向 | 面向小白之eval混淆

所有文章首發在我的微信公眾號“逆向新手”,更多逆向系列請關注公眾號,謝謝!聲明:本文只作學習研究,禁止用于非法用途,否則后果自負,如有侵權,請告知刪除,謝謝&#xff0…

mac mysql密碼錯誤_解決mac 下mysql安裝后root用戶登錄密碼錯誤問題

使用的mac OS 10.11 安裝mysql后訪問root/root用戶失敗,網上找了一些解決辦法,下面記錄下解決方法方便以后自己查詢概述(看懂下面就不用看了):停服務:sudo /usr/local/mysql/support-files/mysql.server stop安全模式…

python獲取軟件窗口句柄_Python獲取瀏覽器窗口句柄過程解析

句柄(handle)是C程序設計中經常提及的一個術語。它并不是一種具體的、固定不變的數據類型或實體,而是代表了程序設計中的一個廣義的概念。句柄一般是指獲取另一個對象的方法——一個廣義的指針,它的具體形式可能是一個整數、一個對…

mysql 副本 同步_副本機制與副本同步

1.管理其他副本的節點稱為Follower。每當Leader將新數據寫入本地存儲d的副本時,也會將數據更改寫入日志之中。每個Follower會從Leader那里獲取修改日志,并相應地更新數據到的本地副本之中,這樣,所有的在Follower上副本的修改順序會…

mongodb 輸出數組字段_MongoDb文檔操作、索引操作

學習主題:MongoDb學習目標:掌握mongodb文檔的更新掌握mongodb文檔的刪除掌握mongodb文檔的查找掌握mongodb文檔的條件操作符掌握mongodb中的索引操作Mongodb的更新方式Update()函數更新Save()函數更新Mongodb的update更新?Update用于更新已存…

表情符號mysql utf8mb4_mysql utf8mb4與emoji表情

一 什么是Emojiemoji就是表情符號;詞義來自日語(えもじ,e-moji,moji在日語中的含義是字符)表情符號現已普遍應用于手機短信和網絡聊天軟件。emoji表情符號,在外國的手機短信里面已經是很流行使用的一種表情。手機上如何使用emoji&…

html自適應_web前端入門到實戰:HTML 文檔流,設置元素浮動,導致父元素高度無法自適應的解決方法...

元素浮動定義float 屬性定義元素在哪個方向浮動。以往這個屬性總應用于圖像,使文本圍繞在圖像周圍,不過在 CSS 中,任何元素都可以浮動。浮動元素會生成一個塊級框,而不論它本身是何種元素。如果浮動非替換元素,則要指定…

idea 遠程調試_我的天!你竟然不會用IDEA遠程調試Tomcat...

# 準備工作明確的遠程服務器的IP地址,某些我是:192.168.92.128關掉服務器防火墻:service iptables stop# 本地遠程服務器配置添加遠程服務器,如下圖復制遠程服務器自動生成的JVM參數,等下有用,如下圖&#…

mysql異步查詢 java_基于 mysql 異步驅動的非阻塞 Mybatis

雖然 spring5 也推出了 WebFlux 這一套異步技術棧,這種極大提升吞吐的玩法在 node 里玩的風生水起,但 java 世界里異步依舊不是主流,Vertx 倒是做了不少對異步的支持,但是其對于數據訪問層的封裝依舊還是挺精簡的,傳統…

跨域獲取后臺數據undefined_同源策略amp;JSONP跨域

同源策略&JSONP跨域同源策略 對于同源的定義,MDN給出了這樣的解釋:如果兩個頁面的協議,端口(如果有指定)和主機都相同,則兩個頁面具有相同的源。如何確定兩個頁面是否同源,只要比較兩個頁面…

python 除數不能為零的報錯有哪些_【社區精選40】Python錯誤處理及代碼調試方法(文末贈書中獎名單)...

本文整理自愛數據學院中的問答更多精彩問答,進入下方社區網站查看http://www.lovedata.cn/invitation社區精選話題 第40期Python錯誤處理及代碼調試方法一次寫完代碼程序并能夠正常運行的概率很小很小,總會有各種各樣的錯誤bug需要處理。有的報錯簡單&a…

利用python批量查詢企業信息_python實現批量獲取指定文件夾下的所有文件的廠商信息...

本文實例講述了python實現批量獲取指定文件夾下的所有文件的廠商信息的方法。分享給大家供大家參考。具體如下:功能代碼如下:import os, string, shutil,reimport pefileimport codecs, sysimport wximport struct#輸出中打印Unicode字符#sys.stdout co…

mac mysql prefpane_【MySQL數據庫開發之一】Mac下配置安裝數據庫-MySQL

本站文章均為那么從今天開始陸續會更新數據庫和Hibernate框架的博文,也是Himi學習的歷程記錄,希望大家能共同討論和研究;OK,本篇簡單介紹安裝吧,首先到MySQL官方網站:如上圖:點擊DOWNLOAD &…

系統新模塊增加需要哪些步驟_想要吸引人流,兒童樂園需要增加哪些新設備呢...

兒童樂園是現今最火爆的一個投資項目,因為它的主要消費群體是孩子,而現在的家長們對孩子們的寵愛,基本都會答應讓孩子們去兒童樂園里面玩耍。但是兒童樂園的投資經營者也會遇見一些小問題,例如兒童樂園添加設備要怎么選擇呢&#…

php mysql 圖像_php-向/從MySQL數據庫插入/查看圖像

我在DB中插入圖像時遇到問題.該表具有以下結構:> id-> INT(3)->自動增量>名稱-> VARCHAR(30)> extension-> VARCHAR(10)[可能太短]> img-> MEDIUMBLOB插入圖像的PHP代碼為:if($_FILES[file][error]0){$result is_uploaded_f…

照片打印預覽正常打印空白_小米發布口袋照片打印機,可無墨打印3寸背膠照片...

9月11日消息,小米推出一款小米口袋照片打印機。與之前的小米米家照片打印機相比,這款新品更加小巧便攜,體積接近充電寶大小,凈重僅181g,便于隨身攜帶。小米口袋照片打印機采用ZINK無墨技術打印,即使用嵌入紙…

c中獲取python控制臺輸出_在真實的tim中用C捕獲控制臺python打印

我正在嘗試從C創建一個python進程,并從python腳本獲取打印結果。在這就是我的C代碼:namespace ConsoleApp1{public class CreateProcess{public String PythonPath { get; set; }public String FilePath { get; set; }public String Arguments { get; se…

python三大編程語言_程序員最需要的三種編程語言

隨著科學技術的進步和新技術的進步,編程語言的種類越來越多,變化是程序員需要跟蹤和學習許多語言 然而,有太多的語言無法一一掌握 在目前的形式中,最需要掌握的三種編程語言是 現在判斷還不晚 坦白說,找工作很容易 它可…

MySQL優化調優有沒有做過_MySQL 調優/優化的 100 個建議

MySQL是一個強大的開源數據庫。隨著MySQL上的應用越來越多,MySQL逐漸遇到了瓶頸。這里提供 101 條優化 MySQL 的建議。有些技巧適合特定的安裝環境,但是思路是相通的。我已經將它們分成了幾類以幫助你理解。MySQL監控MySQL服務器硬件和OS(操作系統)調優&…