在django中比较owner_id和request.user.id进行身份验证是否安全



在我的应用程序中,我有一个型号:

class Meal(models.Model):
name = models.CharField(max_length=100)
description = models.TextField(max_length=500)
carbohydrates = models.FloatField()
protein = models.FloatField()
fat = models.FloatField()
fiber = models.FloatField()
owner = models.ForeignKey('auth.User', on_delete=models.CASCADE)

以下序列化程序:

class MealSerializer(serializers.ModelSerializer):
class Meta:
model = Meal
fields = "__all__"

这个视图集:

class MealViewSet(viewsets.ModelViewSet):
queryset = Meal.objects.all()
serializer_class = MealSerializer

def get_queryset(self):
return Meal.objects.filter(owner_id=self.request.user.id)

现在我有一个问题,在get_queryset方法中比较owner_id=self.request.user.id进行身份验证安全吗?

或者是否可以在请求中指定user.id,例如使用邮递员并拉取所有用餐对象?

例如:这在邮递员或其他地方可能吗?

我是django的初学者,很少使用邮递员。如果我写错了,很抱歉,英语不是我的母语。

我不确定它能不能工作。在过滤器中,您必须编写owner=self.request.user(首选且安全(。或者,如果您真的想麻烦ID:owner__id=self.request.user.id

潜入self.request.user字段有点危险,因为万一某些未经身份验证的用户到达那里,您的代码就会崩溃。

简而言之,通常进行比较是安全的。以前有人问过这个问题:Django/Auth:request.user可以被利用并指向其他用户吗?

最新更新