使用 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
.
使用 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
.