你好,我正在手动实现一个API筛选器,用户可以筛选数据库。其中一个查询可能如下所示:
book/?writer=Anonymous
,其中作家是通过HTML表单(而非Django表单)的GET请求传递的。
查找方法为:
def list(self, request, *args, **kwargs):
if request.GET.dict():
keys = request.GET.dict()
if 'writer' in keys:
queryset = Book.objects.filter(writer__name__contains=keys['writer'])
# serialize queryset if queryset non empty else return HTTP404
# process and return serializer data
我的问题是,直接使用用户输入查询ORM是否安全?
如果不安全,需要在查询之前做什么?
我正在使用最小的Django Rest Framework安装版本,没有过滤器支持(出于某些奇怪的原因)。
谢谢。
book/?User=Admin
吗? - Saysefilter()
参数仅限于['writer', 'language', 'category', 'price']
等,而不是用户。我的担忧是未经过滤的代码是不安全的。 - user5539517