私はDjangoが初めてです。昨夜、私は現在のプロジェクトのエンティティを編集できるようにするビューに懸命に取り組みました。チャプター、ストーリー、ワールド。どのデータベース オブジェクトが変更されているかを正確に把握するために、ハッシュ、編集中のオブジェクトのタイプ (「チャプター」など)、およびその ID を格納するデータベース エントリをテーブル「edits」に追加しました。データベースで見つかったオブジェクト。ハッシュは非表示の入力としてフォームに追加されます。
バックエンドでは、フォームが送信された後、ハッシュを取得し、それを使用してデータベース内の関連する編集項目を見つけます。次に、これを使用して、最初に編集されていたオブジェクトを見つけます。これは、次の 2 つの理由で行われました。
どのオブジェクトが本当に編集されているかを知ることができます。すべてのフォーム項目が変更された場合、どのオブジェクトが編集されているかを実際に知るために (URL を除いて) 比較するものは何もありません。
ユーザーがフロントエンドをハッキングして、間違ったストーリーを変更するなどの奇妙なことを実行できないようにする必要があります。
今日、Django には と呼ばれる一般的なビューがあることを発見しましたupdate_object
。これは私にとって多くのことを処理しているようです。しかし、データベースを自動的に使用して正しいオブジェクトが編集されていることを確認したり、どのオブジェクトが編集されているかを判別したりしない場合、これは安全でしょうか? HTML 要素を変更することで、フロント エンドでハッキングする簡単な方法が必ずあるはずです。
第二に、これが懸念される場合は、独自の編集ビューを保持するか、update_object ビューを拡張するか、またはその他の解決策をお勧めしますか?
最後に、私はこれを正しい方法で行っていますか? この問題の解決策を正しく考えていない場合は、修正してください。
これがコードを必要とする質問だとは思いません。Django に関連するフォームのセキュリティに関する一般的な質問です。
ありがとう、
パラゴンRG