Django中防止SQL注入的方法

SQL注入是所有网站建设都应该注意防范的东西,使用Django当然也不例外。下面介绍几个Django中防范SQL注入的方案。

 

方案一

总是使用Django自带的数据库API。它会根据你所使用的数据库服务器(例如PostSQL或者MySQL)的转换规则,自动转义特殊的SQL参数。这被运用到了整个Django的数据库API中,只有一些例外:

传给 extra() 方法的 where 参数。 (参考 附录 C这个参数故意设计成可以接受原始的SQL

使用底层数据库API的查询。

 

方案二

看下面的Python代码:

from django.db import connection

 

def user_contacts(request):

    user = request.GET['username']

    sql = "SELECT * FROM user_contacts WHERE username = %s"

    cursor = connection.cursor()

    cursor.execute(sql, [user])

# ... do something with the results

 

请注意在cursor.execute() SQL语句中使用“%s”,而不要在SQL内直接添加参数。 如果你使用这项技术,数据库基础库将会自动添加引号,同时在必要的情况下转意你的参数。

你可能感兴趣的:(Django)