1. 程式人生 > 程式設計 >Python sql注入 過濾字串的非法字元例項

Python sql注入 過濾字串的非法字元例項

我就廢話不多說了,還是直接看程式碼吧!

#coding:utf8
#在開發過程中,要對前端傳過來的資料進行驗證,防止sql注入攻擊,其中的一個方案就是過濾使用者傳過來的非法的字元


def sql_filter(sql,max_length=20):
 dirty_stuff = ["\"","\\","/","*","'","=","-","#",";","<",">","+","%","$","(",")","@","!"]
 for stuff in dirty_stuff:
  sql = sql.replace(stuff,"")
 return sql[:max_length]


username = "1234567890!@#!@#!@#$%======$%"

username = sql_filter(username) # SQL注入
print username

# 輸出結果是:1234567890

補充知識:python解決sql注入以及特殊字元

python往資料庫插入資料,

基礎做法是:

cur=db.cursor()
sql = "INSERT INTO test2(cid,author,content) VALUES (1,'1','aa')"
cur.execute(sql,())

也可以這樣:

cur=db.cursor()
sql = "INSERT INTO test2(cid,content) VALUES (%s,'%s','%s')"
sql=sql%('2','2','bb')
cur.execute(sql,())

但是當含有特殊一點的字元時就有問題了,比如單引號,%等,甚至會被sql注入。

和其他語言一樣,python也他的方法來解決sql注入。

cur=db.cursor()
sql = "INSERT INTO test2(cid,%s,%s)"
cur.execute(sql,('3','3','c%c'))

注意,後面2個%s的前後單引號去掉了。

結果如下:

Python sql注入 過濾字串的非法字元例項

以上這篇Python sql注入 過濾字串的非法字元例項就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。