2016-06-12 5 views
1

攻撃者がフォーム入力を操作するのを防ぐために質問があります。Djangoフォームでのフォーム入力操作の保護

たとえば、私は顧客からレンタルリクエストを受けています。 Djangoにはなど、create_rentalのURLがあります。

urls.py

url(r'^customer/(?P<pk>[0-9])/create_rental/' 
    ,CreateRentalView.as_view() 
    , name='customer_create_rental'), 

でDjangoのFormクラスがfor_customer属性を持っているので。さんはviews.pyで

CreateRentalForm(forms.Form): 
    for_customer= forms.IntegerField(..., widget=forms.HiddenInput()) 
    rental_title = forms.CharField() 
    #and so on and so forth 

があるforms.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にはこれを防止する方法がありますか?

+0

なぜあなたは攻撃者を保護したいですか?この種のことでは、顧客IDはURLの一部ではなく、セッションから取得する必要があります。 – e4c5

答えて

0

これは、各ユーザーがアクセスできるオブジェクトに関する独自のロジックを実装するための問題であり、フレームワーク自体とは関係ありません。

Django Guardianを見てみましょう、と述べた:

ジャンゴ・保護者は、Djangoは、余分な認証バックエンドを提供するためのオブジェクト権限の実装です。

関連する問題