什麼是sql注入,怎麼防止SQL注入?

2021-09-26 01:23:06 字數 1216 閱讀 7106

防止sql注入

什麼是sql注入?

如何防止sql注入?

sql語句引數化

防止sql注入的示例**:

from pymysql import connect

def main():

find_name = input("請輸⼊物品名稱:")

# 建立connection連線

conn = connect(host='localhost',port=3306,user='root',password='mysql',data

base='jing_dong',charset='utf8')

# 獲得cursor物件

cs1 = conn.cursor()

# ⾮安全的⽅式

# 輸⼊ ' or 1 = 1 or ' (單引號也要輸⼊)

# sql = "select * from goods where name='%s'" % find_name

# print("""sql===>%s<====""" % sql)

# # 執⾏select語句,並返回受影響的⾏數:查詢所有資料

# count = cs1.execute(sql)

# 安全的⽅式

# 構造引數列表

params = [find_name]

# 執⾏select語句,並返回受影響的⾏數:查詢所有資料

count = cs1.execute("select * from goods where name=%s", params)

# 注意:

# 如果要是有多個引數,需要進⾏引數化

# 那麼params = [數值1, 數值2....],此時sql語句中有多個%s即可

# %s 不需要帶引號

# 列印受影響的⾏數

print(count)

# 獲取查詢的結果

# result = cs1.fetchone()

result = cs1.fetchall()

# 列印查詢的結果

print(result)

# 關閉cursor物件

cs1.close()

# 關閉connection物件

conn.close()

if __name__ == '__main__':

main()

說明:

什麼是sql注入 如何防止sql注入

sql注入 利用現有應用程式,將 惡意 的sql命令注入到後台資料庫執行一些惡意的操作 造成sql注入的原因是因為程式沒有有效過濾使用者的輸入,使攻擊者成功的向伺服器提交惡意的sql查詢 程式在接收後錯誤的將攻擊者的輸入作為查詢語句的一部分執行,導致原始的查詢邏輯被改變,額外的執行了攻擊者精心構造的...

什麼是SQL注入以及如何防止SQL注入

case 1 模擬使用者登陸案例 1 準備資料 use jt db create table user id int primary key auto increment,username varchar 50 password varchar 50 insert into user values ...

什麼是sql注入,如何防止sql注入漏洞攻擊

使用者根據系統的程式構造非法的引數從而導致程式執行不是程式設計師期望的惡意sql 語句。使用引數化或儲存過程的sql 就可以避免 sql注入。以登入為例,假如登入語句是string sql select count user.id from sys user user where user.user...