zoukankan      html  css  js  c++  java
  • python防止sql注入的方法

    python防止sql注入的方法:
    1. 使用cursor.execute(sql, args)的参数位:

    sql_str = "select * from py_msgcontrol.py_msgcontrol_file_base_info where file_name = %s"
    args = ["12';select now();"]
    conn = pymysql.connect(**conn_dic)
    cursor = conn.cursor()
    cursor.execute(sql_str, args)

      cursor.execute函数将传入的args中的特殊符号进行了转义,从而防止了sql注入的问题。

      注意点是要传入sql语句的字符串占位用引号包起来会出错,像这样:

    sql_str = "select * from py_msgcontrol.py_msgcontrol_file_base_info where file_name = '%s'"

      报错:

    pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '12\';select now();''' at line 1")

    2. 使用pymysql.escape_string对参数进行转义

    args = pymysql.escape_string("12';select now();")
    sql_str = "select * from py_msgcontrol.py_msgcontrol_file_base_info where file_name = '%s'" % args
    conn = pymysql.connect(**conn_dic)
    cursor = conn.cursor()
    cursor.execute(sql_str)
    

      

  • 相关阅读:
    Beta 冲刺(1/7)
    福大软工 · BETA 版冲刺前准备(团队)
    福大软工 · 第十一次作业
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    个人作业——软件工程实践总结作业
    Beta 答辩总结
    Beta 冲刺 (7/7)
    Beta 冲刺 (6/7)
  • 原文地址:https://www.cnblogs.com/hufulinblog/p/10537482.html
Copyright © 2011-2022 走看看