python中如何防止sql注入


python訪問數據庫的底層庫很多,以pymysql為例, 它在執行sql前,會對sql中的特殊字符進行轉義,如

  • 字符轉義
def escape_string(value, mapping=None):
    """escape_string escapes *value* but not surround it with quotes.


    Value should be bytes or unicode.
    """
    if isinstance(value, unicode):
        return _escape_unicode(value)
    assert isinstance(value, (bytes, bytearray))
    value = value.replace('\\', '\\\\')
    value = value.replace('\0', '\\0')
    value = value.replace('\n', '\\n')
    value = value.replace('\r', '\\r')
    value = value.replace('\032', '\\Z')
    value = value.replace("'", "\\'")
    value = value.replace('"', '\\"')
    return value
  •  執行sql的正確方法,不要在sql中拼接參數,字符轉義只會針對參數args
# query作為sql模板,args為將要傳入的參數
execute(query, args=None)
  • django/sqlalchemy
orm框架都是使用pymysql/MySQL-python等庫,並且都使用execute(query,args)調用,將sql與參數分開傳入。

  • sql注入檢測工具

sqlmap


《壽康寶鑒》有聲書
壽康寶鑒百話有聲書(mp3)
百度網盤  https://pan.baidu.com/s/1rs5k7RTB9DxgdCuG-mSzog  密碼 9lf1




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM