私は Rails のセキュリティ上の懸念について調べてきましたが、私が最も懸念しているのは大量割り当てです。私のアプリケーションは attr_accessible を使用していますが、公開された関係を処理する最善の方法が何であるかを完全に知っているかどうかはわかりません。基本的なコンテンツ作成/所有 Web サイトがあると仮定しましょう。ユーザーはブログ投稿を作成し、そのブログ投稿に関連付けられた 1 つのカテゴリを持つことができます。
したがって、次の 3 つのモデルがあります。
- ユーザー
- 投稿:ユーザーとカテゴリに属します
- カテゴリ:ユーザーに属します
私は、category_id の一括割り当てを許可しているので、ユーザーはそれを無効にしたり、自分のカテゴリの 1 つに変更したり、一括割り当てによって、他の誰かのカテゴリに変更したりできると思います。それは、私が進むべき最善の方法が何であるかについて、私がちょっと確信が持てないところです.
私が調査したリソース (特にrailscast #178とその railscast から提供されたリソース) の両方で、関連付けは一括割り当て可能であってはならないと述べられていますが、これは理にかなっています。ユーザーが投稿のカテゴリを簡単に変更できるようにする方法が他にないかどうかはわかりません。
これを解決する最善の方法についてのアイデアはありますか? 私はそれを間違った方法で見ていますか?
更新:私の懸念をもう少し明確にすることを願っています。
私がポストにいるとしましょう。次のようなものが必要ですか。
def create
@post = Post.new(params[:category])
@post.user_id = current_user.id
# CHECK HERE IF REQUESTED CATEGORY_ID IS OWNED BY USER
# continue on as normal here
end
それは多くの仕事のように見えますか?更新アクションと作成アクションの両方で、すべてのコントローラーでそれを確認する必要があります。belongs_to 関係は 1 つだけではないことに注意してください。