中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在python中使用Django防止SQL注入

發布時間:2021-04-17 17:23:16 來源:億速云 閱讀:247 作者:Leah 欄目:開發技術

本篇文章給大家分享的是有關怎么在python中使用Django防止SQL注入,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

 id = 11001
    sql = """
    SELECT
      id,
      name,
      age
    FROM
      student
    WHERE
      id = """+id+""" 
    """
    cursor = connection.cursor()
    try:
      cursor.execute(sql)
      result = cursor.fetchall()
      for result1 in result:
        // 代碼塊
        pass
    finally:
      cursor.close()

一般來說寫SQL語句在程序中,若有where條件一般都可能會去直接拼接,到那時這種方式容易被SQL注入,首先說明下什么是SQL的注入,簡單來說就是你寫的SQL被別人在頁面上拼接了SQL。比如拼接1=1這種條件,如果登錄接口被注入1=1那么就可以隨意進入你的程序了。所以才要防止SQL的注入。

下面再來看看防止SQL的注入

 id = 11001
 params = []
    sql = """
    SELECT
      id,
      name,
      age
    FROM
      student
    WHERE
      id = %s
    """
    params.append(id)
    cursor = connection.cursor()
    try:
      cursor.execute(sql, params)
      result = cursor.fetchall()
      for result1 in result:
        // 代碼塊
        pass
    finally:
      cursor.close()

我們把直接拼接的條件變量放入集合再把集合帶入執行SQL的方法,就可以避免被注入的風險,在SQL的條件中使用%s進行站位,要注意的是這個%s是有順序的,比如說上面這個SQL后面在跟一個條件name=%s那么下面的params集合也要多加一個元素params.append(name)這個時候name是在id后面的在集合中。這樣可以一一對應,但如果要是把params.append(name)寫在了params.append(id)前面SQL執行就會出現id=name and name = id 的條件就亂了,甚至還會報錯。
使用connection完畢之后一定要記得close,connection是django.db中的,導入不要導入錯了。

以上就是怎么在python中使用Django防止SQL注入,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武宣县| 红桥区| 田东县| 东港市| 莆田市| 渑池县| 肇庆市| 霍山县| 滦平县| 邵阳县| 临安市| 商南县| 西乡县| 宣化县| 苏州市| 青海省| 甘孜县| 华池县| 花莲市| 阿巴嘎旗| 靖远县| 丰城市| 曲松县| 巴林右旗| 铜陵市| 孝感市| 南安市| 兴化市| 循化| 灌南县| 静安区| 高碑店市| 布尔津县| 惠水县| 菏泽市| 塔河县| 木里| 六盘水市| 柳河县| 翁源县| 垣曲县|