1
我有一个问题可以防止攻击者操纵表单输入。防止使用Django表单操纵表单输入
比方说,我有一个客户的租赁要求。在Django中,有一个create_rental
网址,说rent-website.com/customer/1/create_rental
。
由于urls.py
url(r'^customer/(?P<pk>[0-9])/create_rental/'
,CreateRentalView.as_view()
, name='customer_create_rental'),
Django的Form类具有for_customer
属性。比方说,在forms.py
有
CreateRentalForm(forms.Form):
for_customer= forms.IntegerField(..., widget=forms.HiddenInput())
rental_title = forms.CharField()
#and so on and so forth
在views.py,
CreateRentalView(FormMixin, DetailView):
def get_form(self):
super(CreateRentalView, self).get_form()
self.base_fields['for_customer'].initial = self.kwargs['pk'] #in this case 1
最后,在模板中,你将有HTML
问题是,如果攻击者改变了值到2,那么他可以将它添加到他可能没有提供服务的客户。
Django有没有办法阻止或减轻这种情况?
为什么要保护攻击者?在这种情况下,客户ID不应该是网址的一部分,但应该从会话中检索。 – e4c5