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