10天零基础逆袭!Python入门到精通全攻略(附代码+实战)第八篇:数据库操作与ORM(Day8)

10天零基础逆袭!Python入门到精通全攻略(附代码+实战)

第八篇:数据库操作与ORM(Day8)


一、SQL注入攻防实战

1.1 SQL注入原理

SQL注入是通过恶意构造输入,使得应用程序拼接的SQL语句被篡改,从而执行非预期的数据库操作[[3]]。例如:

-- 原始SQL
SELECT * FROM users WHERE username = 'admin' AND password = '12345';

-- 恶意输入
username = "admin' -- "
password = "任意值"

-- 最终SQL
SELECT * FROM users WHERE username = 'admin' -- ' AND password = '任意值';

危害分析

  • 数据泄露
  • 数据篡改
  • 系统权限提升
1.2 防御策略
  1. 参数化查询:避免直接拼接SQL语句[[10]]。

    import sqlite3
    
    conn = sqlite3.connect('example.db')
    cursor = conn.cursor()
    
    # 安全查询
    username = "admin"
    password = "12345"
    cursor.execute("SELECT * FROM users WHERE username = ? AND password = ?", (username, password))
    result = cursor.fetchall()
    
  2. ORM框架:使用对象关系映射工具自动处理SQL生成[[7]]。

  3. 输入验证:对用户输入进行严格校验和过滤。

    import re
    
    def validate_input(input_str):
        if not re.match(r'^[a-zA-Z0-9_]+$', input_str):
            raise ValueError("非法字符")
    

二、SQLAlchemy核心原理

2.1 ORM架构解析
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全息架构师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值