From 04eda17d3b8cf1c2425701ad8f24788b8b63f2cc Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Thu, 16 Mar 2017 14:54:45 +0100 Subject: [PATCH] Do not change attributes values to downcase (e. g. will break urls). --- lib/html_sanitizer.rb | 6 +-- test/unit/aaa_string_test.rb | 6 ++- test/unit/email_parser_test.rb | 68 ++++++++++++++++---------------- test/unit/html_sanitizer_test.rb | 4 +- 4 files changed, 44 insertions(+), 40 deletions(-) diff --git a/lib/html_sanitizer.rb b/lib/html_sanitizer.rb index 10db5316e..21d38b72b 100644 --- a/lib/html_sanitizer.rb +++ b/lib/html_sanitizer.rb @@ -50,7 +50,7 @@ satinize html string based on whiltelist # prepare src attribute if node['src'] src = cleanup_target(node['src']) - if src =~ /(javascript|livescript|vbscript):/i || src.start_with?('http', 'ftp', '//') + if src =~ /(javascript|livescript|vbscript):/i || src.downcase.start_with?('http', 'ftp', '//') node.remove Loofah::Scrubber::STOP end @@ -137,7 +137,7 @@ satinize html string based on whiltelist # prepare links if node['href'] href = cleanup_target(node['href']) - next if !href.start_with?('http', 'ftp', '//') + next if !href.downcase.start_with?('http', 'ftp', '//') node.set_attribute('href', href) node.set_attribute('rel', 'nofollow') node.set_attribute('target', '_blank') @@ -338,7 +338,7 @@ cleanup html string: end def self.cleanup_target(string) - URI.unescape(string).downcase.gsub(/[[:space:]]|\t|\n|\r/, '').gsub(%r{/\*.*?\*/}, '').gsub(//, '').gsub(/\[.+?\]/, '') + URI.unescape(string).gsub(/[[:space:]]|\t|\n|\r/, '').gsub(%r{/\*.*?\*/}, '').gsub(//, '').gsub(/\[.+?\]/, '') end def self.url_same?(url_new, url_old) diff --git a/test/unit/aaa_string_test.rb b/test/unit/aaa_string_test.rb index c303f5b65..08c4f2aa4 100644 --- a/test/unit/aaa_string_test.rb +++ b/test/unit/aaa_string_test.rb @@ -539,6 +539,10 @@ Men-----------------------' result = 'http://example.com?a=1;' assert_equal(result, html.html2html_strict) + html = 'http://example.com/withSoMeUpper/And/downCase' + result = 'http://example.com/withSoMeUpper/And/downCase' + assert_equal(result, html.html2html_strict) + html = 'web.de' result = 'web.de' assert_equal(result, html.html2html_strict) @@ -796,7 +800,7 @@ christian.schaefer@example.com'

T: +49 (0) 12345/1234560-0

F: +49 (0) 12345/1234560-2

annad@example.com

-

www.example.com www.ABC.com

+

www.example.com www.ABC.com

Geschäftsführer Vor Nach, VorUndZu Nach - Amtsgericht Dort HRB 12345 - Ein Unternehmer der ABC Gruppe

' diff --git a/test/unit/email_parser_test.rb b/test/unit/email_parser_test.rb index 9eab1da9f..0eb47b64e 100644 --- a/test/unit/email_parser_test.rb +++ b/test/unit/email_parser_test.rb @@ -65,7 +65,7 @@ Old programmers never die. They just branch to a new address. }, { data: IO.binread('test/fixtures/mail3.box'), - body_md5: '56d5b0bc7444bd2ab38b28d3b07b48a7', + body_md5: 'a6a96cc1deaba0c4a068ea39c7a3e7b8', params: { from: '"Günther John | Example GmbH" ', from_email: 'k.guenther@example.com', @@ -82,7 +82,7 @@ Old programmers never die. They just branch to a new address.

Mit freundlichen Grüßen

John Günther

 

-

example.com (http://www.geofachdatenserver.de) – profitieren Sie vom umfangreichen Daten-Netzwerk

+

example.com (http://www.GeoFachDatenServer.de) – profitieren Sie vom umfangreichen Daten-Netzwerk

 

_ __ ___ ____________________________ ___ __ _

 

@@ -135,7 +135,7 @@ Old programmers never die. They just branch to a new address.

-Fritz

On May 2, 2012, at 14:25 , John Smith wrote:

-

Moin Moin,

die Antwort ist zwar etwas spät, aber nach der Schulung war ich krank und danach
hatte ich viel zu tun auf der Arbeit, sodass ich keine Zeit für XXXX hatte.
Ich denke das ist allgemein das Problem, wenn sowas nebenbei gemacht werden muss.

Wie auch immer, danke für die mail mit dem ITSM Zusatz auch wenn das zur Zeit bei der Example nicht relevant ist.

Ich habe im XXXX Wiki den Punkt um die Vorlagen angefügt.
Ticket Template von John Bäcker
Bei uns habe ich das Ticket Template von John Bäcker in der Version 0.1.96 unter XXXX 3.0.10 implementiert.

Fritz wollte sich auch um das andere Ticket Template Modul kümmern und uns zur Verfügung stellen, welches unter XXXX 3.0 nicht lauffähig sein sollte.

Im Wiki kann ich die LDAP Muster Konfigdatei nicht finden.
Hat die jemand von euch zufälligerweise ?

Danke und Gruß
John Smith

Am 4. April 2012 08:24 schrieb Smith, John Marian <john.smith@example.com>:
Hallo zusammen,

ich hoffe Ihr seid noch gut nach Hause gekommen am Mittwoch. Der XXX Kurs Donnerstag und Freitag war noch ganz gut, wobei ich mir den letzten halben Tag eigentlich hätte schenken können.

Soweit ich weiß arbeitet Ihr nicht mit XXX? Falls doch habe ich hier eine tolle (eigentlich) kostenpflichtige Erweiterung für Euch.

Es handelt sich um eine programmiertes Paket von der XXXX AG. Die Weitergabe ist legal.

Mit dem Paket kann man Anhänge an CI’s (Configuration Items) verknüpfen. Das ist sehr praktisch wenn man zum Beispiel Rechnungen an Server, Computern und und und anhängen möchte.

Der Dank geht an Frank Linden, der uns das Paket kostenlos zur Verfügung gestellt hat.

Viele Grüße aus Someware

John

_________________________
SysAdmin
John Marian Smith
IT-Management

Example GmbH & Co. KG
Der Provider für
Mehrwertdienste & YYY

Someware 23
XXXXX Someware

Tel. (01802) XX XX XX - 42
Fax (01802) XX XX XX - 99
nur 6 Cent je Anruf aus dem dt. Festnetz,
max. 42 Cent pro Min. aus dem Mobilfunknetz

E-Mail john.smith@example.de
Web www.Example.de
Amtsgericht Hannover HRA xxxxxxxx
Komplementärin: Example Verwaltungs- GmbH
Vertreten durch: Somebody, Somebody
Amtsgericht Someware HRB XXX XXX

_________________________
Highlights der Example Contact Center-Suite:
Virtual XXX&Power-XXX, Self-Services&XXX-Portale,
XXX-/Web-Kundenbefragungen, CRM, PEP, YYY

+

Moin Moin,

die Antwort ist zwar etwas spät, aber nach der Schulung war ich krank und danach
hatte ich viel zu tun auf der Arbeit, sodass ich keine Zeit für XXXX hatte.
Ich denke das ist allgemein das Problem, wenn sowas nebenbei gemacht werden muss.

Wie auch immer, danke für die mail mit dem ITSM Zusatz auch wenn das zur Zeit bei der Example nicht relevant ist.

Ich habe im XXXX Wiki den Punkt um die Vorlagen angefügt.
Ticket Template von John Bäcker
Bei uns habe ich das Ticket Template von John Bäcker in der Version 0.1.96 unter XXXX 3.0.10 implementiert.

Fritz wollte sich auch um das andere Ticket Template Modul kümmern und uns zur Verfügung stellen, welches unter XXXX 3.0 nicht lauffähig sein sollte.

Im Wiki kann ich die LDAP Muster Konfigdatei nicht finden.
Hat die jemand von euch zufälligerweise ?

Danke und Gruß
John Smith

Am 4. April 2012 08:24 schrieb Smith, John Marian <john.smith@example.com>:
Hallo zusammen,

ich hoffe Ihr seid noch gut nach Hause gekommen am Mittwoch. Der XXX Kurs Donnerstag und Freitag war noch ganz gut, wobei ich mir den letzten halben Tag eigentlich hätte schenken können.

Soweit ich weiß arbeitet Ihr nicht mit XXX? Falls doch habe ich hier eine tolle (eigentlich) kostenpflichtige Erweiterung für Euch.

Es handelt sich um eine programmiertes Paket von der XXXX AG. Die Weitergabe ist legal.

Mit dem Paket kann man Anhänge an CI’s (Configuration Items) verknüpfen. Das ist sehr praktisch wenn man zum Beispiel Rechnungen an Server, Computern und und und anhängen möchte.

Der Dank geht an Frank Linden, der uns das Paket kostenlos zur Verfügung gestellt hat.

Viele Grüße aus Someware

John

_________________________
SysAdmin
John Marian Smith
IT-Management

Example GmbH & Co. KG
Der Provider für
Mehrwertdienste & YYY

Someware 23
XXXXX Someware

Tel. (01802) XX XX XX - 42
Fax (01802) XX XX XX - 99
nur 6 Cent je Anruf aus dem dt. Festnetz,
max. 42 Cent pro Min. aus dem Mobilfunknetz

E-Mail john.smith@Example.de
Web www.Example.de
Amtsgericht Hannover HRA xxxxxxxx
Komplementärin: Example Verwaltungs- GmbH
Vertreten durch: Somebody, Somebody
Amtsgericht Someware HRB XXX XXX

_________________________
Highlights der Example Contact Center-Suite:
Virtual XXX&Power-XXX, Self-Services&XXX-Portale,
XXX-/Web-Kundenbefragungen, CRM, PEP, YYY

', }, @@ -185,14 +185,14 @@ Liebe Grüße! }, { data: IO.binread('test/fixtures/mail6.box'), - body_md5: '0d34402258cb5de631159b0e2bc5346c', + body_md5: '4c6b00d7f9ccd8ae7d678a3485d27266', params: { from: '"Hans BÄKOSchönland" ', from_email: 'me@bogen.net', from_display_name: 'Hans BÄKOSchönland', subject: 'utf8: 使って / ISO-8859-1: Priorität" / cp-1251: Сергей Углицких', content_type: 'text/html', - body: '

this is a test



Compare Cable, DSL or Satellite plans: As low as $2.95. (http://localhost/8hmzenus/2737??ps=)

Test1:–
Test2:&
Test3:∋
Test4:&
Test5:=', + body: '

this is a test



Compare Cable, DSL or Satellite plans: As low as $2.95. (http://localhost/8HMZENUS/2737??PS=)

Test1:–
Test2:&
Test3:∋
Test4:&
Test5:=', }, }, { @@ -354,7 +354,7 @@ Registergericht / Commercial Register of the Local Court: HRB 0000 AG Hof', }, { data: IO.binread('test/fixtures/mail11.box'), - body_md5: '6a90db640ae9dd677ab6e4b441c58d68', + body_md5: 'c7f3e26f79c089f674b94aa146f3e480', attachments: [ { md5: '08660cd33ce8c64b95bcf0207ff6c4d6', @@ -373,7 +373,7 @@ Registergericht / Commercial Register of the Local Court: HRB 0000 AG Hof',
P.S. Damit Sie keinen Tag versäumen, empfehlen wir Ihnen den Link des Adventkalenders (http://newsletters.cylex.de/ref/www.cylex.de/sid-105/uid-4134001/lid-3/http://web2.cylex.de/advent2012?b2b) in
Ihrer Lesezeichen-Symbolleiste zu ergänzen.

 


Impressum
S.C. CYLEX INTERNATIONAL S.N.C.
Sat. Palota 119/A RO 417516 Palota Romania
Tel.: +49 208/62957-0 |
Geschäftsführer: Francisc Osvald
Handelsregister: J05/1591/2009
USt.IdNr.: RO26332771
serviceteam@cylex.de
-Homepage (http://newsletters.cylex.de/ref/www.cylex.de/sid-105/uid-4134001/lid-98/http://web2.cylex.de/homepage/home.asp)
+Homepage (http://newsletters.cylex.de/ref/www.cylex.de/sid-105/uid-4134001/lid-98/http://web2.cylex.de/Homepage/Home.asp)
Newsletter abbestellen (http://newsletters.cylex.de/ref/www.cylex.de/sid-105/uid-4134001/lid-99/http://newsletters.cylex.de/unsubscribe.aspx?uid=4134001&d=www.cylex.de&e=enjoy@znuny.com&sc=3009&l=d)', }, }, @@ -712,14 +712,14 @@ end }, { data: IO.binread('test/fixtures/mail29.box'), - body_md5: 'd52e493b8c1132da8cc321d5e47f4fa7', + body_md5: '2c0e700d4fdb1fe0e9a411234f39aa6f', params: { from: 'Example Sales ', from_email: 'sales@example.com', from_display_name: 'Example Sales', subject: 'Example licensing information: No channel available', to: 'info@znuny.inc', - body: 'Dear Mr. Edenhofer,

We want to keep you updated on TeamViewer licensing shortages on a regular basis.

We would like to inform you that since the last message on 25-Nov-2014 there have been temporary session channel exceedances which make it impossible to establish more sessions. Since the last e-mail this has occurred in a total of 1 cases.

Additional session channels can be added at any time. Please visit ourTeamViewer Online Shop (https://www.teamviewer.com/en/licensing/update.aspx?channel=d842cs9bf85-p1009645n-348785e76e) for pricing information.

Thank you - and again all the best with TeamViewer!

Best regards,

Your TeamViewer Team

P.S.: You receive this e-mail because you are listed in our database as person who ordered a TeamViewer license. Please clickhere (http://www.teamviewer.com/en/company/unsubscribe.aspx?id=1009645&ident=e37682eac65e8ca6ff36074907d8bc14) to unsubscribe from further e-mails.

-----------------------------
+ body: 'Dear Mr. Edenhofer,

We want to keep you updated on TeamViewer licensing shortages on a regular basis.

We would like to inform you that since the last message on 25-Nov-2014 there have been temporary session channel exceedances which make it impossible to establish more sessions. Since the last e-mail this has occurred in a total of 1 cases.

Additional session channels can be added at any time. Please visit ourTeamViewer Online Shop (https://www.teamviewer.com/en/licensing/update.aspx?channel=D842CS9BF85-P1009645N-348785E76E) for pricing information.

Thank you - and again all the best with TeamViewer!

Best regards,

Your TeamViewer Team

P.S.: You receive this e-mail because you are listed in our database as person who ordered a TeamViewer license. Please clickhere (http://www.teamviewer.com/en/company/unsubscribe.aspx?id=1009645&ident=E37682EAC65E8CA6FF36074907D8BC14) to unsubscribe from further e-mails.

-----------------------------
www.teamviewer.com

TeamViewer GmbH * Jahnstr. 30 * 73037 Göppingen * Germany
Tel. 07161 60692 50 * Fax 07161 60692 79

Registration AG Ulm HRB 534075 * General Manager Holger Felgner' }, @@ -931,7 +931,7 @@ end }, { data: IO.binread('test/fixtures/mail43.box'), - body_md5: 'df230afc9ce79d364c52969c3b05cd27', + body_md5: '9de73d8cf7fdda5ca82bc3db8409ce5c', params: { from: 'Paula ', from_email: 'databases.en@example.com', @@ -939,32 +939,32 @@ end subject: 'Kontakte', to: 'info@example.ch', cc: nil, - body: 'http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxnawvplguzzhx4bnxlzwy=

Geben Sie diese Information an den Direktor oder den für Marketing und Umsatzsteigerung verantwortlichen Mitarbeiter Ihrer Firma weiter!



Hallo,

 

Sie könnenAbschnitte wählen (filtern) Empfänger gemäß Tätigkeitsbereichen und Standort der Firmen, um die Effizienz Ihrer Werbemaßnahmen zu erhöhen.

 


Für jeden Kauf von2016-11-05 23:59:59

wir gewähren30% Rabatt

RABATTCODE: WZ2124DD



Bestellen Sie online bei:

company-catalogs.com (http://business-catalogs.example.com/ODtpbGs5MWIzbjUyYzExLTA4Yy06Mmg7N3AvL3R0bmFvY3B0LXlhbW9sc2Nhb3NnYy5lL3RpbXJlZi9lbS9ycnJuaWFpZXMsdGxnaWVpLGUzZHx4bnxlZWY=)

Für weitere Informationen:

E-Mail:databases.en@example.com
Telefon: +370-52-071554 (languages: EN, PL, RU, LT)



Unsubscribe from newsletter: Click here (http://business-catalogs.example.com/c2JudXVlcmNic2I4MWk7MTgxOTMyNS1jMmMtNzA=)' }, }, { diff --git a/test/unit/html_sanitizer_test.rb b/test/unit/html_sanitizer_test.rb index de6d0caff..9d7514556 100644 --- a/test/unit/html_sanitizer_test.rb +++ b/test/unit/html_sanitizer_test.rb @@ -56,9 +56,9 @@ class HtmlSanitizerTest < ActiveSupport::TestCase assert_equal(HtmlSanitizer.strict('XSS'), 'XSS') assert_equal(HtmlSanitizer.strict('XSS', true), 'http://66.000146.0x7.147/ (XSS)') +tt p://6 6.000146.0x7.147/">XSS', true), 'http://66.000146.0x7.147/ (XSS)') assert_equal(HtmlSanitizer.strict('XSS'), 'XSS') - assert_equal(HtmlSanitizer.strict('XSS', true), '//www.google.com/ (XSS)') + assert_equal(HtmlSanitizer.strict('XSS', true), '//www.google.com/ (XSS)') assert_equal(HtmlSanitizer.strict('
'), 'X') assert_equal(HtmlSanitizer.strict('CLICKME'), 'CLICKME') assert_equal(HtmlSanitizer.strict('CLICKME'), 'CLICKME')