Безопасное хранение данных из GET-запроса - Django
Правильно,
Допустим, нам нужно создать сайт на Django, где люди могут забронировать домик на выходные.
Мы добавляем форму поиска на главной странице, где люди могут заполнить дату заезда и выезда. чтобы отфильтровать все доступные домики.
Мы используем общий Listview для создания обзора всех домиков и переписываем queryset, чтобы получить параметры поиска из GET-запроса для создания фильтрованного представления.
views.py
class ListingsView(ListView):
"""Return all listings"""
model = Listing
template_name = 'orders/listings.html'
def get_queryset(self):
"""
Visitors can either visit the page with- or without a search query
appended to the url. They can either use the form to perform a search
or supply an url with the appropriate parameters.
"""
# Get the start and end dates from the url
check_in = self.request.GET.get('check_in')
check_out = self.request.GET.get('check_out')
queryset = Calendar.objects.filter(
date__gte=check_in,
date__lt=check_out,
is_available=True
)
return queryset
Теперь этот код упрощен для удобства чтения, но я хотел бы сохранить дату заселения и выселения, которую ищут люди.
Обновленный views.py
class ListingsView(ListView):
"""Return all listings"""
model = Listing
template_name = 'orders/listings.html'
def get_queryset(self):
"""
Visitors can either visit the page with- or without a search query
appended to the url. They can either use the form to perform a search
or supply an url with the appropriate parameters.
"""
# Get the start and end dates from the url
check_in = self.request.GET.get('check_in')
check_out = self.request.GET.get('check_out')
queryset = Calendar.objects.filter(
date__gte=check_in,
date__lt=check_out,
is_available=True
)
Statistics.objects.create(
check_in=check_in,
check_out=check_out
)
return queryset
Мы создали модель "Статистика" для хранения всех дат, которые ищут люди.
Мы добавляем данные в модель с помощью GET-запроса, и мне интересно, правильно ли мы поступаем? Не создаем ли мы уязвимости?
В форме поиска используются скрытые текстовые входы, поэтому всегда есть возможность не знать, какие данные поступают. Достаточно ли очистки или проверки типа данных из этих вводимых данных, или они всегда будут в строковом формате?
Есть идеи?
Приветствую,