Ich habe Sicherheitsfragen auf Schienen gelesen und die, die mich am meisten besorgt ist, ist die Massenvergabe. Meine Anwendung nutzt attr_accessible, aber ich bin mir nicht sicher, ob ich weiß, wie die exponierten Beziehungen am besten gehandhabt werden können. Nehmen wir an, wir haben eine grundlegende Website zur Erstellung von Inhalten/Besitzern. Ein Benutzer kann Blogposts erstellen und diesem Blogeintrag eine Kategorie zuordnen.Rails: Massensicherheitsbedenken mit Angle_to Beziehungen
So habe ich drei Modelle:
- Benutzer
- Beitrag: gehört zu einem Benutzer und einer Kategorie
- Kategorie: gehört Benutzer
I Massenzuweisung auf der category_id erlauben, damit der Benutzer es nicht auslassen kann, c hange es an eine ihrer Kategorien oder durch Massenzuteilung, ich nehme an, sie könnten es in jemand anderes Kategorie ändern. Das ist der Punkt, an dem ich unsicher bin, wie der beste Weg aussehen könnte.
Die Ressourcen, die ich untersucht habe (besonders railscast #178 und eine resource, die von diesem Railscast zur Verfügung gestellt wurde), beide erwähnen, dass die Assoziation nicht in der Masse zuweisbar sein sollte, was sinnvoll ist. Ich bin nur nicht sicher, wie sonst der Benutzer zu ändern, was die Kategorie der Post in einer railsy Weise wäre.
Irgendwelche Ideen, wie man das am besten löst? Betrachte ich es falsch?
UPDATE: Ich hoffe, meine Bedenken ein wenig mehr zu klären.
Sagen wir, ich in Post bin, muss ich etwas wie folgt aus:
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
, der wie eine Menge Arbeit zu sein scheint? Ich würde das auf jedem Controller sowohl in der Update- als auch in der Create-Aktion überprüfen müssen. Denken Sie daran, dass es mehr als nur eine Beziehung gibt.
Andere Antwort war sehr hilfreich, aber das ist, was tatsächlich mein Problem gelöst hat, also akzeptiere ich es. – dpb