SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Rails 3.0
XSS Protection in ERB
   und das rails_xss-Plugin für Rails 2.3
Worum geht‘s?
XSS
Cross-Site Scripting
XSS
Cross-Site Scripting

    Formular


               Web-
               site
XSS
Cross-Site Scripting

    Formular


               Web-
               site
XSS
Cross-Site Scripting
  Böses
     Script


        Formular


                   Web-
                   site
XSS
Cross-Site Scripting

    Formular


               Web-   Böses
               site      Script
XSS
Cross-Site Scripting

    Formular


               Web-   Böses
               site      Script
XSS
Cross-Site Scripting
                            unschuldiger
                        Seitenaufruf


    Formular


               Web-   Böses
               site      Script
XSS
Cross-Site Scripting
                            unschuldiger
                        Seitenaufruf


    Formular


               Web-   Böses
               site      Script




                           Böses
                              Script
XSS
Cross-Site Scripting
                            unschuldiger
                        Seitenaufruf


    Formular


               Web-   Böses
               site      Script




                           Böses
                              Script
Unsichere Strings???
?
Strings, die potentiell
gefährlich sind, wenn sie
   auf einer Website
  ausgegeben werden
Beispiele
• Benutzereingaben (params-Hash)
• Daten aus der DB
• Hartgecodete Strings von unvorsichtigen
  Programmierern
• Kombinationen davon (z.B. Helper)
• …alles, was evtl. ein böses Script sein könnte
Wie schützt man
sich bei Rails 2?
<%=h some_string %>
Der h-Helper

• Alias für html_escape
• Escaped alle gefährlichen Zeichen, z.B:
  HTML-Tags, in unsicheren Strings
• <li>foo</li>   ➜    &lt;li&gt;foo&lt;/li&gt;
Wie schützt man sich
   unter Rails 3?
<%= some_string %>
Kein h !!!
Kein h !!!
➜ Alle Strings durch h-Helper gefiltert
Manchmal will ich das
     gar nicht!
String als sicher
   kennzeichnen (1/2)
• Attribut lesen:
  my_string.html_safe? ➜ false/true
• Als safe markieren:
  my_string.html_safe!
String als sicher
   kennzeichnen (2/2)
• für Helper:
  safe_helper :my_helper
• In Views:
  <%= raw @article.textilized %>
Rails 3 is paranoid !!!
Um Safe-Status zu behalten, nur:


<<         concat            +
Crazy paranoid stuff

• safe_stuff + more_safe_stuff
  ➜ safe
• "#{safe_stuff}#{more_safe_stuff}"
  ➜ unsafe
Crazy, not so paranoid
      stuff (1/2)
def bar_helper
  "<p>bar</p>"
end




def foo_helper
  content_tag "p" do
    '<script type="text/javascript">alert("foo");</script>'
  end
end
Crazy, not so paranoid
      stuff (2/2)
Mitdenken
nicht vergessen!!!
Ich hab ne Rails 2.3-App,
    und ich würde gerne die Templates an das
neue Default-Verhalten anpassen, hab aber keinen Bock, das
     noch recht instabile Rails 3.0 zu nehmen, weil ich da ja quasi ne ganze Menge Zeugs
mitheirate, das ich entweder nicht gebrauchen kann, wo ich aktuell keine Zeit habe, mich reinzuarbeiten oder was ich
einfach zu unausgegoren halte, und ich hab einfach keine Zeit oder keinen Bock oder beides, um mich nach jeden paar Commits da wieder reinzufrickeln
 um zu checken was eigentlich dieses mal wieder kaputt gegangen ist und dann irgendwelche Entwicklungsversionen von abhängigen Gems zu installieren und all der aufwändige
                                    Scheiß, weil irgendwann muss ich ja auch noch mal arbeiten und so denn von alleine verdient sich Geld ja bekanntlich nicht.
Jahaa! Geht!
rails_xss von NZKoz

• Plugin für Rails 2.3
• Verwendet erubis-Gem zum erb-Parsen
• Imitiert Default-Verhalten von Rails 3
• http://github.com/NZKoz/rails_xss/
?   Fragen?
!
    Ralph von der Heyden
    http://rvdh.de
    @ralph

Weitere ähnliche Inhalte

Andere mochten auch

20151202 Social media nu - Gemeente Utrecht
20151202 Social media nu - Gemeente Utrecht20151202 Social media nu - Gemeente Utrecht
20151202 Social media nu - Gemeente UtrechtPaulus Veltman
 
Klinik der Solidarität - Teil 1
Klinik der Solidarität - Teil 1Klinik der Solidarität - Teil 1
Klinik der Solidarität - Teil 1Thomas Kreiml
 
Thomas Kreiml: "ArbeitnehmerInnen im www. Social Media - Kommunikation, Mitge...
Thomas Kreiml: "ArbeitnehmerInnen im www. Social Media - Kommunikation, Mitge...Thomas Kreiml: "ArbeitnehmerInnen im www. Social Media - Kommunikation, Mitge...
Thomas Kreiml: "ArbeitnehmerInnen im www. Social Media - Kommunikation, Mitge...Thomas Kreiml
 
How-to Video heute: im Web, mobile und überhaupt
How-to Video heute: im Web, mobile und überhauptHow-to Video heute: im Web, mobile und überhaupt
How-to Video heute: im Web, mobile und überhauptBokowsky + Laymann GmbH
 
Testslidespdf
TestslidespdfTestslidespdf
Testslidespdf3Stan
 
Camping Usa
Camping UsaCamping Usa
Camping UsaWolle1
 
Communardo SharePoint Solution Day - Collaboration Workplace: Wikis, Microblo...
Communardo SharePoint Solution Day - Collaboration Workplace: Wikis, Microblo...Communardo SharePoint Solution Day - Collaboration Workplace: Wikis, Microblo...
Communardo SharePoint Solution Day - Collaboration Workplace: Wikis, Microblo...Communardo GmbH
 
ALGUNAS DESPEDIDAS
ALGUNAS DESPEDIDASALGUNAS DESPEDIDAS
ALGUNAS DESPEDIDASelrecreo
 
CCD2014 - Vortrag NetworkedAssets und Kabel Deutschland
CCD2014 - Vortrag NetworkedAssets und Kabel DeutschlandCCD2014 - Vortrag NetworkedAssets und Kabel Deutschland
CCD2014 - Vortrag NetworkedAssets und Kabel DeutschlandCommunardo GmbH
 
A textual DSL for UI Developement - Lessons from the Practice
A textual DSL for UI Developement - Lessons from the PracticeA textual DSL for UI Developement - Lessons from the Practice
A textual DSL for UI Developement - Lessons from the Practicermuecke
 
PoP 2011 – Power of People - Das HR-Camp
PoP 2011 – Power of People - Das HR-CampPoP 2011 – Power of People - Das HR-Camp
PoP 2011 – Power of People - Das HR-CampJan A. Poczynek
 
Web 2.0 Auswirkungen auf eLearning
Web 2.0  Auswirkungen auf eLearningWeb 2.0  Auswirkungen auf eLearning
Web 2.0 Auswirkungen auf eLearningAxel Nattland
 
Indoor-Navigation mit iBeacons – ein Praxisbeispiel.
Indoor-Navigation mit iBeacons – ein Praxisbeispiel.Indoor-Navigation mit iBeacons – ein Praxisbeispiel.
Indoor-Navigation mit iBeacons – ein Praxisbeispiel.Bokowsky + Laymann GmbH
 
Communardo Trendforum 22.06.2011: Collaboration Workplace, Ilja Hauß
Communardo Trendforum 22.06.2011: Collaboration Workplace, Ilja HaußCommunardo Trendforum 22.06.2011: Collaboration Workplace, Ilja Hauß
Communardo Trendforum 22.06.2011: Collaboration Workplace, Ilja HaußCommunardo GmbH
 
Heidi Schoth: Transversale Billigjobber/innen? Dimensionen von Macht und Wide...
Heidi Schoth: Transversale Billigjobber/innen? Dimensionen von Macht und Wide...Heidi Schoth: Transversale Billigjobber/innen? Dimensionen von Macht und Wide...
Heidi Schoth: Transversale Billigjobber/innen? Dimensionen von Macht und Wide...Thomas Kreiml
 

Andere mochten auch (18)

20151202 Social media nu - Gemeente Utrecht
20151202 Social media nu - Gemeente Utrecht20151202 Social media nu - Gemeente Utrecht
20151202 Social media nu - Gemeente Utrecht
 
Klinik der Solidarität - Teil 1
Klinik der Solidarität - Teil 1Klinik der Solidarität - Teil 1
Klinik der Solidarität - Teil 1
 
Thomas Kreiml: "ArbeitnehmerInnen im www. Social Media - Kommunikation, Mitge...
Thomas Kreiml: "ArbeitnehmerInnen im www. Social Media - Kommunikation, Mitge...Thomas Kreiml: "ArbeitnehmerInnen im www. Social Media - Kommunikation, Mitge...
Thomas Kreiml: "ArbeitnehmerInnen im www. Social Media - Kommunikation, Mitge...
 
How-to Video heute: im Web, mobile und überhaupt
How-to Video heute: im Web, mobile und überhauptHow-to Video heute: im Web, mobile und überhaupt
How-to Video heute: im Web, mobile und überhaupt
 
RežI Me!
RežI Me!RežI Me!
RežI Me!
 
Testslidespdf
TestslidespdfTestslidespdf
Testslidespdf
 
Camping Usa
Camping UsaCamping Usa
Camping Usa
 
Communardo SharePoint Solution Day - Collaboration Workplace: Wikis, Microblo...
Communardo SharePoint Solution Day - Collaboration Workplace: Wikis, Microblo...Communardo SharePoint Solution Day - Collaboration Workplace: Wikis, Microblo...
Communardo SharePoint Solution Day - Collaboration Workplace: Wikis, Microblo...
 
ALGUNAS DESPEDIDAS
ALGUNAS DESPEDIDASALGUNAS DESPEDIDAS
ALGUNAS DESPEDIDAS
 
7er Rest
7er Rest7er Rest
7er Rest
 
Ediscio Einfuehrung
Ediscio EinfuehrungEdiscio Einfuehrung
Ediscio Einfuehrung
 
CCD2014 - Vortrag NetworkedAssets und Kabel Deutschland
CCD2014 - Vortrag NetworkedAssets und Kabel DeutschlandCCD2014 - Vortrag NetworkedAssets und Kabel Deutschland
CCD2014 - Vortrag NetworkedAssets und Kabel Deutschland
 
A textual DSL for UI Developement - Lessons from the Practice
A textual DSL for UI Developement - Lessons from the PracticeA textual DSL for UI Developement - Lessons from the Practice
A textual DSL for UI Developement - Lessons from the Practice
 
PoP 2011 – Power of People - Das HR-Camp
PoP 2011 – Power of People - Das HR-CampPoP 2011 – Power of People - Das HR-Camp
PoP 2011 – Power of People - Das HR-Camp
 
Web 2.0 Auswirkungen auf eLearning
Web 2.0  Auswirkungen auf eLearningWeb 2.0  Auswirkungen auf eLearning
Web 2.0 Auswirkungen auf eLearning
 
Indoor-Navigation mit iBeacons – ein Praxisbeispiel.
Indoor-Navigation mit iBeacons – ein Praxisbeispiel.Indoor-Navigation mit iBeacons – ein Praxisbeispiel.
Indoor-Navigation mit iBeacons – ein Praxisbeispiel.
 
Communardo Trendforum 22.06.2011: Collaboration Workplace, Ilja Hauß
Communardo Trendforum 22.06.2011: Collaboration Workplace, Ilja HaußCommunardo Trendforum 22.06.2011: Collaboration Workplace, Ilja Hauß
Communardo Trendforum 22.06.2011: Collaboration Workplace, Ilja Hauß
 
Heidi Schoth: Transversale Billigjobber/innen? Dimensionen von Macht und Wide...
Heidi Schoth: Transversale Billigjobber/innen? Dimensionen von Macht und Wide...Heidi Schoth: Transversale Billigjobber/innen? Dimensionen von Macht und Wide...
Heidi Schoth: Transversale Billigjobber/innen? Dimensionen von Macht und Wide...
 

Rails 3 XSS Protection (Rails user group Hamburg 2009-12-09)

Hinweis der Redaktion

  1. M&amp;#xF6;gliche Angriffe: * User-Session entf&amp;#xFC;hren (Phishing) * Defacements * reflektiv vs. persistent
  2. M&amp;#xF6;gliche Angriffe: * User-Session entf&amp;#xFC;hren (Phishing) * Defacements * reflektiv vs. persistent
  3. M&amp;#xF6;gliche Angriffe: * User-Session entf&amp;#xFC;hren (Phishing) * Defacements * reflektiv vs. persistent
  4. M&amp;#xF6;gliche Angriffe: * User-Session entf&amp;#xFC;hren (Phishing) * Defacements * reflektiv vs. persistent
  5. M&amp;#xF6;gliche Angriffe: * User-Session entf&amp;#xFC;hren (Phishing) * Defacements * reflektiv vs. persistent
  6. M&amp;#xF6;gliche Angriffe: * User-Session entf&amp;#xFC;hren (Phishing) * Defacements * reflektiv vs. persistent
  7. M&amp;#xF6;gliche Angriffe: * User-Session entf&amp;#xFC;hren (Phishing) * Defacements * reflektiv vs. persistent
  8. M&amp;#xF6;gliche Angriffe: * User-Session entf&amp;#xFC;hren (Phishing) * Defacements * reflektiv vs. persistent
  9. M&amp;#xF6;gliche Angriffe: * User-Session entf&amp;#xFC;hren (Phishing) * Defacements * reflektiv vs. persistent