django表单字段清理方法和安全性

时间:2016-01-31 12:09:11

标签: django forms security

我的网络应用程序有很多表单。我不使用django表单类,因为我的表单有点复杂(涉及大量的javascript),所以我自己编写表单并在服务器上处理它们。
我的问题是关于“清理”字段数据。 我知道django表单有一个clean()方法,它应该对数据进行清理 但是django内置的ORM是不是已经从SQL注入式攻击中清理了数据?

如果我有相似的代码:

field = request.POST['field']
record = SomeModel.objects.get(pk=record_id)
record.field = field
record.save()

我张贴了一个<脚本>用一些javascript标记到我的服务器,我在这里找不到任何安全漏洞,因为django清理模板中打印的数据。 那么clean()方法究竟在这里添加了什么,这个代码是否有任何安全问题?

1 个答案:

答案 0 :(得分:1)

clean()方法主要验证表单数据,即它验证表单字段中插入的数据是否适合字段的类型并尊重某些模式。 SQL注入保护是构建到ORM中的。因此,如果您使用django ORM查询集,则应该保护您免受SQL注入攻击。根据{{​​3}}:

  

通过使用Django的查询集,生成的SQL将是正确的   由底层数据库驱动程序转义。

只有当您想要运行docsraw SQL个查询时,您才能正确转义用户可以控制的任何参数。