Internetbureau Holder

Massa toewijzing in Rails

Stephan Kaag di 05 jan 10

De gevolgen voor de veiligheid van een applicatie ten gevolge van mass assignment in Rails zijn al vanaf de eerste versie gedocumenteerd. Toch blijken lang niet alle applicaties hier goed mee om te gaan.

Mass assignment

@user = User.new(params[:user])

In de regel hierboven wordt mass assignment gebruikt om een nieuwe User instantie aan te maken en direct alle (door de browser verstuurde) attributen in te stellen.
Als er geen extra maatregelen worden genomen kan iemand met kwaad in de zin zijn eigen parameters meesturen en deze dus direct (automagisch) laten instellen. Stel dat een er een kolom is_admin bestaat, dan is in die normaal gesproken direct beïnvloedbaar voor misbruik met alle mogelijke gevolgen van dien.

has_many :blog_posts

Het zijn niet alleen database kolommen die op deze manier misbruikt kunnen worden. Stel je voor dat de bovenstaande regel ook in het user-model aanwezig is. Doordat has_many toestaat om direct de id’s via mass assignment in te stellen kan een kwaadwillende user[blog_post_ids][] meesturen om toegang te krijgen tot iemand anders’ blog-posts!

Beveiliging

Rails biedt de class method attr_accessible aan die een whitelist- oplossing gebruikt voor beveiliging. Als je attr_accessible gebruikt kan je de attributen aangeven die je via mass-assignment instelbaar wilt maken en alle andere attributen zullen beveiligd worden.

Gepost in hor |  1 reactie

Michael di 05 jan 10 19:26

Dit is misschien ook een leuke gem http://github.com/cjbottaro/param_protected

Kan je accessors zetten per actie en nested params

Plaats je reactie





Welcome to Holland On Rails

This weblog is the official Ruby techblog from the guys at Holder, a Ruby development company. Holder is also the company behind the RubyAndRails Europe Conference in Amsterdam.

Recente Jobs


Bekijk alle jobs »»

Gereedschapskist

Onmisbare tools voor
iedere developer!
Ruby On Rails
Framework voor de web 2.0 developer. Eindelijk vooruitgang!
TextMate
Editor for true pro's
Typ, tab, top :-)
Nee, niet voor Win.
Made On A Mac
En nou is het over met die saaie grijze Windows bak van je!

Auteurs op deze site

Chris Obdam

'Less is more' evangelist, past dit ook dagelijks toe op zijn tandenborstel.

Chiel Wester

Snelheidswonder op Ruby wielen. Leuk om mee te pair-programmen ;-) Recommend Me

Stephan Kaag

Het eerste Rails coreteam- member uit Nederland? Rails evangelist van het eerste uur.

Paul Engel

Én Rails programmeren én interfaces designen? Je zou hem superman kunnen noemen..

Dax Huiberts

Official Zip-Programmer, skinny code is helemaal zijn ding. Haalt meer code weg dan dat er bij komt.

Freek Monteban

Het nieuwste telg uit het Holland on Rails nest! Hij doet niets anders meer!

Johan Vermeulen

De stylesheet-koning uit de kop van Noord-Holland!