Rails 3.0.6 Sicherheitsupdate veröffentlicht

Rails ist in der Version 3.0.6 als Sicherheitsupdate erschienen. Das geschlossene Sicherheitsleck betrifft einen möglichen Angriff über XSS. Dabei kann bei der Verwendung von auto_link Fremdcode eingeschleust werden.

Wenn folgendes in der View verwendet wird:

<%= auto_link(params[:content]) %>

Kann unter bestimmten Vorraussetzungen über „content“ unerwünschter JavaScript-Code eingeschleust werden.

Um sich gegen diese Lücke zu schützen, ….

  • … auf Rails 3.0.6 aktualisiert werden
  • … der folgende Patch eingespielt werden: Patch
  • … wenn Update oder das Patchen nicht möglich ist, kann händisch das Problem umgangen werden
    • <%= sanitize(auto_link(params[:content])) %>
    • bei vertrauenswürdigen Quellen
      <%= raw(auto_link(params[:content])) %>

Weitere Details zu dem Release findet ihr unter folgendem Link: –> Link

Rails 3 Cheatsheet

Gregg Pollack von EnvyLabs hat ein Cheatsheet für Rails 3 Entwickler veröffentlicht. Es sollte ursprünglich früher erscheinen, aber die Arbeiten an seinen letzten Screencasts haben unerwartet mehr Zeit beansprucht. Auch wenn Rails 3 nun bereits seit einiger Zeit verfügbar ist, ist das Cheatsheet eine gute Quelle um das eine oder andere nachzuschlagen.

Es ist ein umfangreiches Cheatsheet geworden, dass sehr viele Bereiche abdeckt und somit auch für erfahrene Entwickler wertvoll/hilfreich sein wird.

Das PDF ist in sechs Haupt-Bereiche aufgeteilt und jeder Bereich ist in sich nochmal gegliedert:

  1. Routing:
    • Basic Routing
    • Optionale Parameter
    • Redirection
    • Named Routes
    • Rack Routing
    • Constraints
    • Legacy Route
    • Scope
  2. Bundler
    • Bundler Commands
    • Gemfile Syntax
    • Workflow
  3. ActiveRelation
    • Lazy Loading
    • CRUD Methods
    • Chain Methods
    • Chaining
    • (Named) Scopes
    • Deprecated
  4. XSS Protection & UJS
    • XSS Protection
    • Unobtrusive JavaScript
    • HTML5 Custom Data Attributes
    • Deprecated
    • Using JQuery
  5. ActionMailer & ActionController
    • Rails Mail Generator
    • Basic Mailer Syntax
    • Delivering Messages
    • Defaults and Attachements
    • Respond_To and Respond_With
  6. ActiveModel
    • Dirty
    • Validations
    • Serialization
    • Callbacks

Neben dem Umfang hat Gregg auch viel Wert auf das Layout gelegt.

Das Rails 3 Cheatsheet kann unter folgender URL runtergeladen werden: http://blog.envylabs.com/Rails_3_Cheat_Sheets.pdf

Der entsprechende Blogpost mit weiteren Details ist unter folgender Adresse erreichbar: http://blog.envylabs.com/2010/12/rails-3-cheat-sheets/

Dann bleibt uns nur noch übrig euch viel Spaß beim cheaten zu wünschen 🙂

Screencast: Schutz vor XSS in Rails 3

XSS (Cross-Site Scripting), eine Bezeichnung für das Ausnutzen von Sicherheitslücken innerhalb von Webanwendungen, sollte in allen WEB-Applikationen unterbunden werden. Ryan zeigt in dieser Woche welche Änderungen in Rails 3 den Entwickler dabei unterstützt, um von Anfang an mögliche Sicherheitslücken zu vermeiden.

 

Download:

Download (15.7 MB, 8:56)
alternative download for iPod & Apple TV (11.1 MB, 8:56)

 

Resourcen:

 

Quellcode:

[html]
<!– views/comments/_comment.html.erb –>
<div class="comment">
<%= strong link_to(comment.name, comment.url) %>
<p><%= comment.content %></p>
</div>
[/html]

[ruby]
# rails
"foo".html_safe?
safe = "safe".html_safe
safe.html_safe?

# application_helper.rb
def strong(content)
"<strong>#{h(content)}</strong>".html_safe
end
[/ruby]

Screencast: 7 Sicherheitstips

Auf Screencasts.com ist heute ein weiterer Screencast erschienen. In dieser Folge werden sieben Tips beschrieben um die Sicherheit innerhalb Rails-Applikationen zu erhöhen.

Downloadlinks:

Download (22.2 MB, 14:53)

Alternativer Download for iPod & Apple TV(16.9 MB, 14:53)

Weitere Ressourcen:

  • Rails Security Guide
  • Full episode source code

Links und Quellcodes zu den einzelnen Beispielen:

1 Mass Assignment:

[ruby]

# script/console
p = Project.find(2)
p.update_attributes(:task_ids => [4])
p.tasks

# models/project.rb
attr_accessible :name, :photo
[/ruby]

2 File Uploads
Disabling Script Execution with Apache

[ruby]
# models/project.rb
validates_attachment_content_type :photo, :content_type => [‚image/jpeg‘, ‚image/png‘]
# more security required
[/ruby]

3 Filter Log Params
Episode 9: Filtering Sensitive Logs

[ruby]
# application_controller.rb
filter_parameter_logging :password
[/ruby]

4 CSRF Protection
Cross-site Request Forgery
Rails authenticity token with jQuery

[ruby]
# application_controller.rb
protect_from_forgery
[/ruby]

5 Authorizing Ownership

[ruby]
# projects_controller.rb
def show
@project = current_user.projects.find(params[:id])
end
[/ruby]

6 SQL Injection
SQL Injection
Episode 25: SQL Injection

[ruby]
# projects_controller.rb
def index
@projects = current_user.projects.all(:conditions => ["name like ?", "%#{params[:search]}%"])
end
[/ruby]

7 HTML Injection (XSS)
Cross Site Scripting
Episode 27: Cross Site Scripting

[ruby]
<!– projects/show.html.erb –>
<%=h task.name %>
[/ruby]