欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python+Django實現(xiàn)防止SQL注入的辦法

 更新時間:2019年10月31日 10:56:44   作者:王先生cc  
這篇文章主要介紹了python+Django實現(xiàn)防止SQL注入的辦法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

先看看那種容易被注入的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()

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python_matplotlib改變橫坐標和縱坐標上的刻度(ticks)方式

    python_matplotlib改變橫坐標和縱坐標上的刻度(ticks)方式

    這篇文章主要介紹了python_matplotlib改變橫坐標和縱坐標上的刻度(ticks)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python3字符串操作總結(jié)

    python3字符串操作總結(jié)

    這篇文章主要介紹了python3字符串操作總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • python線程類改變類變量的操作代碼

    python線程類改變類變量的操作代碼

    這篇文章主要介紹了python線程類改變類變量的操作代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01
  • python利用requests庫進行接口測試的方法詳解

    python利用requests庫進行接口測試的方法詳解

    在python的標準庫中,雖然提供了urllib,utllib2,httplib,但是做接口測試,requests真心好,正如官方說的,“讓HTTP服務(wù)人類”,一言以蔽之,說明一切,這篇文章主要給大家介紹了關(guān)于python利用requests庫進行接口測試的相關(guān)資料,需要的朋友可以參考下
    2018-07-07
  • Pytorch中torch.argmax()函數(shù)使用及說明

    Pytorch中torch.argmax()函數(shù)使用及說明

    這篇文章主要介紹了Pytorch中torch.argmax()函數(shù)使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Python Matplotlib庫入門指南

    Python Matplotlib庫入門指南

    這篇文章主要介紹了Python Matplotlib庫入門指南,本文講解了Matplotlib是什么,然后給出了Matplotlib基礎(chǔ)繪圖實例如繪制折線圖、繪制多線圖,并給出了圖例功能使用實例,需要的朋友可以參考下
    2015-05-05
  • 如何利用pycharm進行代碼更新比較

    如何利用pycharm進行代碼更新比較

    這篇文章主要介紹了如何利用pycharm進行代碼更新比較,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • 一個Python優(yōu)雅的數(shù)據(jù)分塊方法詳解

    一個Python優(yōu)雅的數(shù)據(jù)分塊方法詳解

    在做需求過程中有一個對大量數(shù)據(jù)分塊處理的場景,具體來說就是幾十萬量級的數(shù)據(jù),分批處理,每次處理100個。這時就需要一個分塊功能的代碼。本文為大家分享了一個Python中優(yōu)雅的數(shù)據(jù)分塊方法,需要的可以參考一下
    2022-05-05
  • Python 專題二 條件語句和循環(huán)語句的基礎(chǔ)知識

    Python 專題二 條件語句和循環(huán)語句的基礎(chǔ)知識

    本文主要介紹了Python條件語句和循環(huán)語句的基礎(chǔ)知識。主要內(nèi)容包括: 1.條件語句:包括單分支、雙分支和多分支語句,if-elif-else;2.循環(huán)語句:while的使用及簡單網(wǎng)絡(luò)刷博器爬蟲;3.循環(huán)語句:for的使用及遍歷列表、元組、文件和字符串。
    2017-03-03
  • 為什么str(float)在Python 3中比Python 2返回更多的數(shù)字

    為什么str(float)在Python 3中比Python 2返回更多的數(shù)字

    很多朋友質(zhì)疑為什么str(float)在Python 3中比Python 2返回更多的數(shù)字,在Python 2.7中,一個float的repr返回最接近十七位數(shù)的十進制數(shù);這足以精確地識別每個可能的IEEE浮點值。對此問題很多朋友都很疑問,下面小編給大家簡單介紹下,需要的朋友可以參考下
    2018-10-10

最新評論