1. Python / Говнокод #18501

    −125

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    class UserProductlistView(ListView):
        template_name = 'productlist/userproductlistitem_list.html'
        model = UserProductListItem
        paginate_by = 20
        list = None
        formset = modelformset_factory(UserProductListItem, ProductlistItemForm, extra=0, max_num=20)
        deleteform = None
    
        def get_queryset(self):
            self.list = get_object_or_404(UserProductList, slug=self.kwargs.get('slug'))
            return UserProductListItem.objects.filter(productlist=self.list, productlist__user=self.request.user)
    
        def post(self, request, **kwargs):
            self.list = get_object_or_404(UserProductList, slug=self.kwargs.get('slug'))
            if request.POST.get('deletelist'):
                self.deleteform = ProductlistDeleteForm(request.POST, instance=self.list)
                if self.deleteform.is_valid():
                    self.deleteform.instance.delete()
                    messages.success(request, u'Список "%s" удален' % (self.list,))
                    return redirect('userproductlist_list')
            if request.POST.get('subscribelist'):
                self.list.subscribe = not self.list.subscribe
                self.list.save()
                messages.success(request, u'Настройки списка "%s" изменены' % (self.list,))
                return redirect('userproductlist_list')
            return self.get(request, **kwargs)

    Получаем список товаров юзера по slug в URL, не добавляя в запрос текущего юзера. Действительно, зачем? Ведь его можно добавить при получении товаров списка.
    В результате: любой может открыть список любого человека, зная URL этого списка, увидеть, что там нет товаров, порадоваться этому, и удалить список.

    Запостил: krokodil_910, 21 Июля 2015

    Комментарии (1) RSS

    • OWASP top 10: недостаточная аутентификация, аутентификация на стороне клиента.
      Ответить

    Добавить комментарий