有bug(sql注入的問題):python
#pip3 install pymysql import pymysql user=input('user>>: ').strip() pwd=input('password>>: ').strip() # 創建連接 conn=pymysql.connect( host='192.168.10.15', port=3306, user='root', password='123', db='db9', charset='utf8' ) # 拿到遊標 cursor=conn.cursor() # 執行sql語句 sql='select * from userinfo where user = "%s" and pwd="%s"' %(user,pwd) rows=cursor.execute(sql) cursor.close() conn.close() # 進行判斷 if rows: print('登陸成功') else: print('登陸失敗')
在sql語句中 --空格 就表示後面的被註釋了,因此密碼pwd就不驗證了,只要帳戶名對了就好了,這樣跳過了密碼認證就是sql注入mysql
這樣的連用戶名都不用知道均可以進入,因此在註冊帳戶名時好多特殊字符都不讓使用,就怕這個.sql
改進版(防止sql注入)數據庫
#pip3 install pymysql import pymysql user=input('user>>: ').strip() pwd=input('password>>: ').strip() # 創建連接 conn=pymysql.connect( host='192.168.10.15', port=3306, user='root', password='123', db='db9', charset='utf8' ) # 拿到遊標 cursor=conn.cursor() # 原來的執行sql語句 # sql='select * from userinfo where user = "%s" and pwd="%s"' %(user,pwd) # print(sql) # 如今的 sql='select * from userinfo where user = %s and pwd=%s' rows=cursor.execute(sql,(user,pwd)) #原來是在sql中拼接,如今是讓execute去作拼接user和pwd cursor.close() conn.close() # 進行判斷 if rows: print('登陸成功') else: print('登陸失敗')