Regular Expressions – Sebastians Blog https://sgaul.de Neues aus den Softwareminen Wed, 19 Mar 2014 19:30:23 +0000 de-DE hourly 1 https://wordpress.org/?v=6.1.7 https://sgaul.de/wp-content/uploads/2019/02/cropped-sgaul-2-1-32x32.jpg Regular Expressions – Sebastians Blog https://sgaul.de 32 32 Rails 4 schützt Nutzer vor Regex-Schwachstellen https://sgaul.de/2014/03/19/rails-4-schuetzt-nutzer-vor-regex-schwachstellen/ Wed, 19 Mar 2014 19:30:23 +0000 https://sgaul.de/?p=2565 Rails 4 schützt Nutzer vor Regex-Schwachstellen weiterlesen]]> Rails 4 warnt seine Nutzer vor einer weit verbreiteten Sicherheitslücke, die durch falsche Anwendung von regulären Ausdrücken auftritt. So sind Validatoren wie der folgende nicht mehr erlaubt:

validates :phone, format: { with: /^[0-9]+$/ }

Dies wirft einen Argument-Error wie diesen:

`check_options_validity': The provided regular expression
 is using multiline anchors (^ or $), which may present a
 security risk. Did you mean to use \A and \z, or forgot 
 to add the :multiline => true option? (ArgumentError)

Hintergrund ist, dass reguläre Ausdrücke in Ruby von Haus aus mehrere Zeilen matchen:

"0123456789" =~ /^[0-9]+$/
 => 0
 
 "0123456789<script>alert('42!');</script>" =~ /^[0-9]+$/
 => nil
 
 # aber:

 "0123456789\n<script>alert('42!');</script>" =~ /^[0-9]+$/
 => 0

Die Begrenzer ^ und $ matchen hier Zeilenanfang und -ende. In aller Regel will man jedoch Anfang und Ende des Gesamtstrings adressieren, wozu Ruby \A und \z bereitstellt:

"0123456789" =~ /\A[0-9]+\z/
 => 0 
 
 "0123456789\n<script>alert('42!');</script>" =~ /\A[0-9]+\z/
 => nil

Mit diesem Ausdruck läuft der obige Validator fehlerfrei durch.

Will man wirklich einzelne Zeilen validieren, kann man die obige Fehlermeldung mit der Option multiline: true deaktivieren.

]]>
RegHex heißt jetzt Regexpad… https://sgaul.de/2012/09/24/reghex-heist-jetzt-regexpad/ Mon, 24 Sep 2012 13:54:19 +0000 https://sgaul.de/?p=1419 … sonst ändert sich nur die Domain. Unser Online-Tool, mit dem man direkt im Browser reguläre Ausdrücke gegen mehrere Beispieltexte testen kann, ist ab sofort unter folgender Adresse zu erreichen:

http://regexpad.com

]]>
Reguläre Ausdrücke online testen: Reghex https://sgaul.de/2012/01/05/regulare-ausdrucke-online-testen-reghex/ https://sgaul.de/2012/01/05/regulare-ausdrucke-online-testen-reghex/#comments Thu, 05 Jan 2012 12:50:24 +0000 https://sgaul.de/?p=869 Vor einigen Wochen stolperten wir während einer Vorlesung über das Problem, ein schnelles und einfaches Testwerkzeug für reguläre Ausdrücke unter Linux zu finden. Schnell wurde uns klar, dass man einen solchen Dienst sehr gut als Webanwendung realisieren könnte. Als wir uns dann im Zuge einer anderen Vorlesung mit einem Javascriptprojekt beschäftigen sollten, war „Reghex“ geboren…

Der Name Reghex

Der Name des Tools war eine recht spontane Idee: Ein einfaches Wortspiel aus Regular Expressions bzw. Regex und einer Hexe (die Anwendung ist schließlich zauberhaft gut) formte zunächst die Reghexe, was sich dann später noch auf Reghex verkürzte. Wir haben sogar verschiedene Schreibweisen zu bieten: Die Seite selbst spricht von „reg[h]?ex“, im Code heißt es „RegHex“. Um es nicht so eindeutig zu lassen, habe ich mich hier für das typografisch korrekte Reghex entschieden.

Reguläre Ausdrücke testen

Bei Reghex kann man einen regulären Ausdruck und einen oder mehrere Teststrings eingeben. In Echtzeit prüft die Anwendung nun, ob der reguläre Ausdruck auf die Teststrings passt. Diese werden entsprechend farbig unterlegt: Rot passt nicht, grün wird durch den Ausdrück abgedeckt.

Für die Ausdrücke lassen sich die üblichen Optionen wie „i“ für die Beachtung von Groß- und Kleinschreibung oder „m“ für mehrzeilige Tests einfach über eine Liste auswählen.

Reguläre Ausdrücke für Javascript, PHP und Java

Ein besonderes Highlight ist die Umschaltbarkeit des Regex-Parsers. Neben regulären Ausdrücken, wie sie in Javascript verwendet werden, unterstützt die Anwendung auch die Dialekte, die in PHP und Java zur Verfügung stehen. Weitere Sprachunterstützungen sind hierbei einfach zu realisieren und auch geplant.

Open Source und fast nur Javascript

Die Webanwendung braucht fast nur Javascript, um ihren Dienst zu verrichten. Lediglich für die Dialekte von PHP oder Java wird der Server mittels Ajax bemüht. Hierbei wird eine PHP-Schnittstelle genutzt, welche die Anfrage an ein Programm der entsprechenden Sprache weiterleitet und das Ergebnis im JSON-Format zurück schickt.

Das Projekt mitsamt Quellcode liegt bei Github und kann somit von jedermann eingesehen und genutzt werden. Zwar ist die Entwicklung noch nicht abgeschlossen, generell sollte das Tool aber nutzbar sein.

Links

]]>
https://sgaul.de/2012/01/05/regulare-ausdrucke-online-testen-reghex/feed/ 4