django 原生sql防止注入

django 原生sql防止注入

risenarrow
2024-02-07 17:58

在Django中使用原生SQL时,可以通过参数化查询来避免SQL注入。


下面是一个示例的Django原生SQL查询,展示了如何使用参数化查询来保护应用程序免受SQL注入攻击:


python

from django.db import connection
def get_user(username):
    with connection.cursor() as cursor:
        # 创建一个参数化查询语句
        query = "SELECT * FROM users WHERE username=%s"
        
        # 将参数传递到查询中
        cursor.execute(query, [username])
        
        # 获取结果集
        result = cursor.fetchall()
    
    return result



上述示例中,我们使用%s作为占位符,并将要查询的值作为第二个参数传递给execute()函数。这样就能确保输入的值被正确地转义和处理,从而有效地防止SQL注入攻击。