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

is that important to clean data when use self.kwargs.get()?

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

如果您使用 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.