zoukankan      html  css  js  c++  java
  • pymysql防止SQL注入的方法

    import pymysql
    
    
    class Db(object):
    
        def __init__(self):
            self.conn = pymysql.connect(host="192.168.0.58", user="root", password="123456", port=3306)
            self.cursor = self.conn.cursor()
    
        def __del__(self):
            self.cursor.close()
            self.conn.close()
    
        def execute_sql(self):
            name = input("请输入被查询人的姓名:")
            sql = F"select * from test1.user_info where name='{name}'"
            print(f"----->{sql}<------")
            self.cursor.execute(sql)    # 自己拼装的SQL,在输入时使用特殊的传入值(比如:' or 1=1 or '1),能获取到数据表中的所有信息,也就是存在SQL注入的风险。
            print(self.cursor.fetchall())
    
        def secure_execute_sql(self):
            name = input("(安全)请输入被查询人的姓名:")
            sql = "select * from test1.user_info where name=%s"
            # print(f"----->{sql}<------")
            params = [name]     # 将参数放入列表或元组中
            self.cursor.execute(sql, params)    # 使用execute方法拼装SQL语句,防SQL注入
            print(self.cursor.fetchall())
    
    
    def main():
        db = Db()
        while True:
            db.execute_sql()
            db.secure_execute_sql()
    
    
    if __name__ == "__main__":
        main()

    执行结果:

  • 相关阅读:
    HTML快速复习
    jQueryAjax
    jQuery工具类函数
    jQuery常用插件
    jQuery动画
    CodeBlock 使用TextOut出错
    Java数组与vector互转
    C++字符串常量
    Android 开发必备
    Java 修改Windows注册表,以实现开机自启动应用程序。
  • 原文地址:https://www.cnblogs.com/testlearn/p/12497074.html
Copyright © 2011-2022 走看看