使用self.kwargs.get()时清理数据是否重要?

时间:2018-02-01 14:25:53

标签: django django-views django-urls

在使用self.kwargs.get()时清理数据非常重要? 例如,当我们通过self.kwargs.get(pk)从视图类中的url获取pk时。我在编写SQL查询时使用pk。 如果答案是肯定的,我该如何清理数据?

1 个答案:

答案 0 :(得分:1)

如果您使用ORM中的值,那么Django会为您进行转义。

slug = self.kwargs.get('slug')
obj = MyModel.objects.get(slug=slug)

如果您正在编写原始SQL,那么应尽可能使用参数来阻止SQL注入。

slug = self.kwargs.get('slug')
cursor.execute("SELECT title FROM my_model WHERE slug = %s", [slug])

如果您正在使用self.kwargs.get()进行字符串连接,那么您可能会有SQL注入的风险。风险取决于URL模式,例如,如果您的命名组为(<?P<pk>[0-9]+>),则self.kwargs['pk']无法用于SQL注入,因为它只能由数字0-9组成