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