Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort des Fachgutachters
Einleitung
1 Einführung
2 Installation
3 Erste Schritte
4 Einführung in Ruby
5 Eine einfache Bookmarkverwaltung
6 Test-Driven Development
7 Rails-Projekte erstellen
8 Templatesystem mit ActionView
9 Steuerzentrale mit ActionController
10 Datenbankzugriff mit ActiveRecord
11 E-Mails verwalten mit ActionMailer
12 Nützliche Helfer mit ActiveSupport
13 Ajax on Rails
14 RESTful Rails und Webservices
15 Rails mit Plug-ins erweitern
16 Performancesteigerung
17 Sicherheit
18 Veröffentlichen einer Rails-Applikation auf einem Server
Ihre Meinung?

Spacer
 <<   zurück
Ruby on Rails 2 von Hussein Morsy, Tanja Otto
Das Entwickler-Handbuch
Buch: Ruby on Rails 2

Ruby on Rails 2
geb., mit DVD
699 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-89842-779-1
Online bestellenPrint-Version jetzt bestellen
* versandkostenfrei in (D) und (A)
Pfeil 17 Sicherheit
  Pfeil 17.1 Warum Sicherheit wichtig ist
  Pfeil 17.2 SQL Injection
  Pfeil 17.3 Cross-Site-Scripting XSS
  Pfeil 17.4 Cross-Site Request Forgery (CSRF/XSRF)
  Pfeil 17.5 Sessions
  Pfeil 17.6 Validierung
  Pfeil 17.7 Reguläre Ausdrücke


Rheinwerk Computing - Zum Seitenanfang

17.4 Cross-Site Request Forgery (CSRF/XSRF)  topZur vorigen Überschrift

Ziel: Daten verändern

Bei einem Cross-Site-Request-Forgery-Angriff werden unberechtigt Daten in einer Webapplikation verändert. Der Angreifer bedient sich dazu eines ahnungslosen Opfers, das ein autorisierter Benutzer der Applikation sein muss. Aus dem Webbrowser des Opfers wird ohne dessen Wissen und Einverständnis eine entsprechend präparierte HTTP-Anfrage an die Applikation geschickt. Das kann zum Beispiel über ein manipuliertes img -Tag erfolgen, das in einer E-Mail enthalten ist und statt der URL zur Grafik die präparierte Anfrage des Angreifers enthält. Das heißt, die Anfrage wird von der Applikation so verarbeitet, als wäre sie vom Opfer autorisiert. Statt eines img-Tags kann auch JavaScript-Code verwendet werden.

Risiko minimieren

Sie können das Risiko eines solchen Angriffs minimieren, indem Sie die HTTP-Methode GET nur zur Abfrage von Daten nutzen. Alle anderen Aktionen zum Ändern und Löschen der Daten, sollten per POST, PUT oder DELETE gesendet werden.

Vor Rails 2.0 war es darüber hinaus unbedingt zu empfehlen, das Plug-in CSRF killer zu installieren (http://railsbuch.de/urls/5). Das Plug-in generiert für alle in Rails generierten Formulare einen Security Token, der über ein verstecktes Feld übertragen wird.

Rails 2.0

Ab Rails 2.0 ist dieses Plug-in in Rails integriert. Das heißt, für alle Formulare, die mit dem scaffold -Generator oder der Helper-Methode form_for generiert werden, wird automatisch ein Security Token generiert, der über ein verstecktes Feld (authenticity_token) übertragen wird:

<form action="/bookmarks/10" class="edit_bookmark"
id="edit_bookmark_10" method="post" >
<div style="margin:0;padding:0" >
<input name="_method" type="hidden" value="put" />
<input name="authenticity_token" type="hidden"
value="ed128a9b3b5fcb7cab6bb205c505d6789d10eca7" />
</div>
...
</form>

protect_"=from_forgery

Die Verarbeitung des Security Tokens übernimmt die Methode protect_from_forgery, die ab Rails 2 automatisch im ApplicationController implementiert wird:

Listing  app/controllers/application.rb

class ApplicationController < ActionController::Base
  helper :all # include all helpers, all the time

  # See ActionController::RequestForgeryProtection for details
  # Uncomment the :secret if you're not using the cookie session store
on store
  protect_from_forgery # :secret =>
  '6a87e5c44190791178c836d16abce511'
end

Wird die Methode protect_from_forgery ohne Parameter aufgerufen, schützt sie alle Methoden, die über HTML- oder Ajax-Anfragen aufgerufen werden, die nicht die HTTP-Methode GET nutzen.

authenticity_token

Der authenticity_token wird zum Vergleich mit dem Token, der über das versteckte Feld gesendet wird, in der Session gespeichert. Diese wird ab Rails 2 in einem Cookie gespeichert, das mit einem Hash-Wert vor Fälschung geschützt ist.

Dieser Hash-Wert wird beim Erzeugen einer Rails 2 Applikation automatisch in der Datei config/environment.rb generiert:

...
# Your secret key for verifying cookie session data integrity.
# If you change this key, all old sessions will become
# invalid! Make sure the secret is at least 30 characters and
# all random, no regular words or you'll be exposed to
# dictionary attacks.

config.action_controller.session = {
  :session_key => '_bookmarkmanager_session',
  :secret      => '043067831bc3aef23ae2a8b20e31862c0d39db8c...'
}
...

Nicht persistente Cookies

Zusätzlich können Sie sich vor einem CSRF-Angriff schützen, indem Sie ausschließlich nicht persistente Cookies erzeugen, die immer am Ende der Session gelöscht werden.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
 <<   zurück
  Zum Katalog
Zum Katalog: Ruby on Rails 2
Ruby on Rails 2
Jetzt bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Ruby on Rails 3.1






 Ruby on Rails 3.1


Zum Katalog: Responsive Webdesign






 Responsive Webdesign


Zum Katalog: Suchmaschinen-Optimierung






 Suchmaschinen-
 Optimierung


Zum Katalog: JavaScript






 JavaScript


Zum Katalog: Schrödinger lernt HTML5, CSS3 und JavaScript






 Schrödinger lernt
 HTML5, CSS3
 und JavaScript


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de