-
HINTERGRUND
-
Auf dem Internet beruhende Computersoftware-Anwendungen oder „Web“-Anwendungen können durch bösartige Angriffe gefährdet sein, wenn sie Benutzereingaben nicht in geeigneter Weise prüfen, bevor diese verarbeitet und bei sicherheitssensiblen Operationen verwendet werden. Eine übliche Praxis besteht darin, dass eine derartige Prüfung ausgeführt wird, indem Benutzereingaben an den Schnittstellen der Web-Anwendung, mit denen Benutzer zusammenwirken, vorgegeben werden. Daher kann zum Beispiel eine auf HTML beruhende Webseite, die einem Benutzer präsentiert wird, Parameter enthalten, die lediglich über Dropdown-Kästchen mit einer begrenzten Menge von im Voraus definierten Werten für eine Auswahl durch den Benutzer auszufüllen sind, und sie kann verborgene Parameter enthalten, die nicht dafür vorgesehen sind, durch den Benutzer direkt modifiziert zu werden, wobei die Parameter anschließend zu der zugrunde liegenden Web-Anwendung weiterzuleiten sind.
-
Die
US 7 451 352 B1 betrifft eine Validierung von Web-Controls, die unter Verwendung einer oder mehrerer Deklarationen definiert werden kann, die vom Autor der Webseite in einer ASP+-Datei enthalten sind. Die Deklarationen spezifizieren serverseitige Objekte, die die in der Webseite empfangenen Eingabedaten validieren und im Falle eines Validierungsfehlers eine Fehlerbehandlung bewirken. Validierungsdeklarationsparameter geben die Validierungskriterien an, anhand derer die Eingabedaten validiert werden. Beispiele für Validierungsoperationen stellen reguläre Ausdrücke, Pflichtfelder, Datenvergleich, Bereichsvergleich und benutzerdefinierte Validierung dar. Validierungsparameter können auch entweder die serverseitige Validierung oder die clientseitige Validierung angeben, in Abhängigkeit von den Fähigkeiten des Client-Browsers. In einem server-seitigen Szenario verarbeitet ein server-seitiges Validierungsobjekt die Eingabedaten, die in einer HTTP-Anforderung vom Client empfangen werden. In einem clientseitigen Szenario liefert ein serverseitiges Validierungsobjekt den entsprechenden clientseitigen Code zur Validierung der Eingabedaten ohne Roundtrip zwischen Client und Server.
-
KURZDARSTELLUNG
-
Die Erfindung betrifft ein Verfahren, ein System und ein Computerprogrammprodukt, deren Merkmalen in den entsprechenden Hauptansprüchen angegeben sind. Ausführungsformen der Erfindung sind in den abhängigen Patentansprüchen angegeben.
-
Ein beispielhaftes Verfahren zum Erkennen von Sicherheitsschwachstellen in Web-Anwendungen beinhaltet ein Zusammenwirken mit einer Web-Anwendung während ihrer Ausführung, um eine Webseite zu identifizieren, die durch die Web-Anwendung zugänglich gemacht wird; und ein statisches Analysieren der Webseite, um einen Parameter in der Webseite zu identifizieren, der durch eine clientseitige Prüfmaßnahme vorgegeben wird und der zu der Web-Anwendung gesendet werden soll. Das Verfahren beinhaltet des Weiteren ein Ermitteln einer serverseitigen Prüfmaßnahme, die auf den Parameter anzuwenden ist, im Hinblick auf die Vorgabe, die durch die clientseitige Prüfmaßnahme an dem Parameter bewirkt wird; und ein statisches Analysieren der Web-Anwendung, um eine Stelle in der Web-Anwendung zu identifizieren, an der der Parameter in die Web-Anwendung eingegeben wird. Das Verfahren beinhaltet des Weiteren ein Feststellen, ob der Parameter durch die serverseitige Prüfmaßnahme vorgegeben wird, bevor der Parameter in einer sicherheitssensiblen Operation verwendet wird; und ein Identifizieren des Parameters als eine Sicherheitsschwachstelle, wenn der Parameter durch die serverseitige Prüfmaßnahme nicht vorgegeben wird, bevor der Parameter in der sicherheitssensiblen Operation verwendet wird.
-
Figurenliste
-
Die Ausführungsformen können anhand der folgenden genauen Beschreibung und in Verbindung mit den beigefügten Zeichnungen besser verstanden und bewertet werden, in denen:
- 1 eine vereinfachte konzeptionelle Darstellung eines Systems zum Erkennen von Sicherheitsschwachstellen in Web-Anwendungen darstellt, die eine clientseitige Prüfung verwenden, wobei das System gemäß einer Ausführungsform der Erfindung aufgebaut und funktionsfähig ist;
- 2 eine vereinfachte Ablaufplandarstellung eines beispielhaften Verfahrens des Betriebs des Systems von 1 darstellt, das gemäß einer Ausführungsform der Erfindung funktionsfähig ist; und
- 3 eine vereinfachte Blockschaltbild-Darstellung einer beispielhaften Hardware-Umsetzung eine Datenverarbeitungssystems darstellt, das gemäß einer Ausführungsform der Erfindung aufgebaut und funktionsfähig ist.
-
GENAUE BESCHREIBUNG
-
Die Erfindung wird im Folgenden im Kontext einer oder mehrerer Ausführungsformen beschrieben, wobei die Beschreibung die Erfindung als Ganzes veranschaulichen und nicht in der Weise ausgelegt werden soll, dass sie die Erfindung auf die dargestellten Ausführungsformen beschränkt. Es ist klar, dass für einen Fachmann zahlreiche Modifikationen vorstellbar sind, die trotzdem im wahren Erfindungsgedanken und Umfang der Erfindung liegen, selbst wenn sie an dieser Stelle nicht speziell gezeigt werden.
-
Wie einem Fachmann klar ist, können Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt ausgeführt werden. Dementsprechend können Aspekte der vorliegenden Erfindung die Form einer reinen Hardware-Ausführungsform, einer reinen Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardware-Aspekte kombiniert, die hier alle als „Schaltung“, „Modul“ oder „System“ bezeichnet werden können. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien ausgeführt wird, die computerlesbaren Programmcode aufweisen, der darin ausgeführt wird.
-
Jede Kombination aus einem oder mehreren computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann z.B. ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, -vorrichtung oder - einheit oder jede geeignete Kombination des Vorhergehenden sein, ist jedoch nicht darauf beschränkt. Zu spezifischeren Beispielen (eine nicht erschöpfende Liste) des computerlesbaren Speichermediums würde Folgendes gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Festwertspeicher (ROM), ein löschbarer programmierbarer Festwertspeicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compactdisk-Festwertspeicher (CD-ROM), eine optische Datenspeichereinheit, eine magnetische Datenspeichereinheit oder jede geeignete Kombination des Vorhergehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes materielle Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung enthalten oder speichern kann.
-
Ein computerlesbares Signalmedium kann ein verbreitetes Datensignal mit einem computerlesbaren Programmcode, der darin z.B. im Basisband oder als Teil einer Trägerwelle verkörpert wird, enthalten. Ein derartiges verbreitetes Signal kann jede von einer Vielfalt von Formen annehmen, darunter elektromagnetische, optische Formen oder jede geeignete Kombination hiervon, ohne jedoch auf diese beschränkt zu sein. Ein computerlesbares Signalmedium kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung übertragen, verbreiten oder transportieren kann.
-
Programmcode, der auf einem computerlesbaren Medium verkörpert ist, kann unter Verwendung jedes geeigneten Mediums übertragen werden, darunter drahtlose, leitungsgestützte, Lichtwellenleiterkabel-, HF-Medien oder jede geeignete Kombination aus dem Vorhergehenden, ohne auf diese beschränkt zu sein.
-
Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination aus einer oder mehreren Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie etwa die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann nur auf dem Computer eines Benutzers, teilweise auf dem Computer eines Benutzers, als ein eigenständiges Software-Paket, teilweise auf dem Computer eines Benutzers und teilweise auf einem fernen Computer oder nur auf dem fernen Computer oder Server ausgeführt werden. In dem zuletzt genannten Szenario kann der ferne Computer mit dem Computer des Benutzers durch jeden Netzwerktyp verbunden sein, einschließlich eines lokalen Netzwerks (LAN) oder eines Weitverkehrsnetzes (WAN), oder die Verbindung kann zu einem externen Computer (z.B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden.
-
Aspekte der vorliegenden Erfindung werden hier unter Bezugnahme auf Ablaufplan-Darstellungen und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist klar, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaltbilder und Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaltbildern durch Computerprogrammbefehle umgesetzt werden können. Diese Computerprogrammbefehle können an einen Prozessor eines Universalcomputers, eines Spezialcomputers oder eine andere programmierbare Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu bilden, so dass Befehle, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Umsetzen der Funktionen/Wirkungen, die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind, erzeugen.
-
Diese Computerprogrammbefehle können außerdem in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsgegenstand produzieren, darunter Befehle, die die Funktion/Wirkung umsetzen, die in dem Block/den Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind.
-
Die Computerprogrammbefehle können außerdem in einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten geladen werden, um eine Reihe von Operationsschritten zu bewirken, die auf dem Computer, der anderen programmierbaren Datenverarbeitungsvorrichtung oder anderen Einheiten ausgeführt werden sollen, um einen durch einen Computer implementierten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Wirkungen, die in dem Block oder Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind, bereitzustellen.
-
Im Folgenden erfolgt eine Bezugnahme auf 1, bei der es sich um eine vereinfachte konzeptionelle Darstellung eines Systems zu Erkennen von Sicherheitsschwachstellen in Web-Anwendungen handelt, die eine clientseitige Prüfung verwenden, wobei das System gemäß einer Ausführungsform aufgebaut und funktionsfähig ist. Bei dem System von 1 ist in einer Ausführungsform ein Blackbox-Tester 100 wie etwa IBM Rational AppScan™, die von der International Business Machines Corporation, Armonk NY, handelsüblich verfügbar ist, so eingerichtet, dass er mit einer Web-Anwendung 102 während seiner Ausführung gemäß herkömmlichen Blackbox-Prüftechniken zusammenwirkt, um statisch oder dynamisch erzeugte Webseiten zu identifizieren, die durch die Web-Anwendung 102 zugänglich gemacht werden. Bei der Web-Anwendung 102 kann es sich um jede computergestützte Softwareanwendung handeln, die durch einen Computerserver 104 beherbergt wird und auf die durch einen oder mehrere Client-Computer 106 über ein Computernetzwerk 108 wie etwa das Internet zugegriffen wird.
-
Bei einer Ausführungsform ist ein Vorgabemanager 110 so eingerichtet, dass er die durch den Blackbox-Tester 100 identifizierten Webseiten statisch analysiert, um in den Webseiten Parameter zu identifizieren, die durch eine oder mehrere im Voraus definierte clientseitige Prüfmaßnahmen 112 vorgegeben werden und an die Web-Anwendung 102 im Server 104 gesendet werden sollen. Zu derartigen clientseitigen Prüfmaßnahmen 112 können z.B. Maßnahmen gehören:
- - bei denen der Parameter ein verborgener Parameter ist;
- - bei denen es sich bei dem Parameter um einen Parameter handelt, dem ein Wert durch Auswählen aus einer Liste von im Voraus definierten Werten wie z.B. über ein Dropdown-Kästchen zugewiesen wird; und
- - bei denen es sich bei dem Parameter um einen Parameter handelt, für den eine clientseitige Prüfung ausgeführt wird, um zu ermitteln, ob sein Wert einem regulären Ausdruck entspricht.
-
Bei einer Ausführungsform kann der Vorgabemanager 110 eine oder mehrere serverseitige Prüfmaßnahmen 114 festlegen, die im Hinblick auf die Vorgaben, die durch clientseitige Prüfmaßnahme 112 an dem Parameter bewirkt werden, auf einen gegebenen Parameter angewendet werden sollten. Zu derartigen serverseitigen Prüfmaßnahmen 114 können z.B. Maßnahmen gehören:
- - bei denen der Parameter ein verborgener Parameter ist, wobei diese Web-Anwendung 104 nach einer Korrelation zwischen seinem Wert und den Werten anderer vom Client bereitgestellter Parameter prüft. Wenn es sich z.B. bei dem möglichen Parameter bei einer Webseite um ein Boole'sches vorborgenes Feld mit der Bezeichnung „isAdmin“ handelt, das durch JavaScript™-Code in der Webseite eingestellt wird, wenn der Benutzer einen Benutzernamen und ein Passwort eingibt, besteht die clientseitige Vorgabe darin, dass „isAdmin“ mit dem eingegebenen Benutzernamen und dem eingegebenen Passwort korreliert wird;
- - bei denen es sich bei dem Parameter um einen Parameter handelt, dem ein Wert durch Auswählen aus einer Liste von im Voraus definierten Werten wie z.B. über ein Dropdown-Kästchen zugewiesen wird, wobei diese Web-Anwendung 104 prüft, ob der Wert zu einer festen Menge von Werten oder zu einem im Voraus definierten Wertebereich gehört; und
- - bei denen es sich bei dem Parameter um einen Parameter handelt, für den eine clientseitige Prüfung ausgeführt wird, um zu ermitteln, ob sein Wert einem regulären Ausdruck entspricht, wobei diese Web-Anwendung 104 dieselbe Prüfung ausführt.
-
Bei einer Ausführungsform kann der Vorgabemanager 110 identifizierte Parameter gemeinsam mit ihren anwendbaren serverseitigen Prüfmaßnahmen 114 in einem Datenspeicher von Parametervorgaben 116 speichern.
-
Bei einer Ausführungsform kann ein statischer Analysator 118 so eingerichtet sein, dass er eine Web-Anwendung 104 statisch analysiert, z.B. durch Bilden eines Modells des Steuerungsablaufs und eines Datenfluss-Modells der Web-Anwendung 104, um Stellen in der Web-Anwendung 104 zu identifizieren, an denen Parameter der Webseite in die Web-Anwendung 104 eingegeben werden. Für jeden Parameter, der auf diese Weise identifiziert wird, fragt der statische Analysator 118 den Vorgabemanager 110 ab oder greift alternativ auf Parametervorgaben 116 direkt zu, um zu ermitteln, welche Vorgaben auf den Parameter angewendet werden sollten und ob diese Vorgaben durch die Web-Anwendung 104 auf den Parameter angewendet werden, bevor der Parameter in einer sicherheitssensiblen Operation verwendet wird. Der statische Analysator 118 identifiziert jeden Parameter als eine Sicherheitsschwachstelle, der in der Web-Anwendung 104 nicht durch anwendbare serverseitige Prüfmaßnahmen 114 vorgegeben wird, bevor der Parameter in einer sicherheitssensiblen Operation verwendet wird. Der statische Analysator 118 liefert einen Bericht über die identifizierten Sicherheitsschwachstellen der Web-Anwendung 104 z.B. an eine Bedienperson des Blackbox-Testers 100 oder des statischen Analysators 118.
-
Nunmehr wird auf 2 Bezug genommen, bei der es sich um eine vereinfachte Ablaufplandarstellung eines beispielhaften Verfahrens des Betriebs des Systems von 1 handelt, das gemäß einer Ausführungsform funktionsfähig ist. Bei dem Verfahren von 2 kann eine Blackbox-Prüfung einer Web-Anwendung während ihrer Ausführung ausgeführt werden, um alle statisch oder dynamisch erzeugten Webseiten zu identifizieren, die durch die Web-Anwendung zugänglich gemacht werden (Block 200). Das System analysiert statisch identifizierte Webseiten, um in den Webseiten Parameter zu identifizieren, die durch eine oder mehrere im Voraus definierte clientseitige Prüfmaßnahmen vorgegeben werden und die zu der Web-Anwendung gesendet werden sollen (Block 202). Das System legt eine oder mehrere serverseitige Prüfmaßnahmen fest, die auf einen gegebenen Parameter angewendet werden sollten, im Hinblick auf die Vorgaben, die durch clientseitige Prüfmaßnahmen an dem Parameter bewirkt werden (Block 204). Das System führt eine statische Analyse an der Web-Anwendung aus, um in der Web-Anwendung Stellen zu identifizieren, an denen Webseiten-Parameter in die Web-Anwendung eingegeben werden (Block 206). Wenn ein Parameter in der Web-Anwendung nicht durch anwendbare serverseitige Prüfmaßnahmen vorgegeben wird, bevor der Parameter in einer sicherheitssensiblen Operation verwendet wird (Block 208), identifiziert und meldet das System den Parameter als eine Sicherheitsschwachstelle (Block 210).
-
Das System von
1 und das Verfahren von
2 können im Kontext des folgenden Beispiels demonstriert werden, bei dem der Blackbox-Tester
100 mit der Web-Anwendung
104 während ihrer Ausführung zusammenwirkt und bei einer Webseite präsentiert wird, die ein Login-Formular aufweist. Bei einer Ausführungsform analysiert der Vorgabemanager
110 die Webseite, stellt fest, dass das Login-Formular ein verborgenes Merkerbit aufweist, das angibt, ob es sich bei dem Benutzer um einen Administrator handelt, und legt fest, dass das verborgene Merkerbit mit Werten korreliert werden sollte, die durch andere Parameter gehalten werden, die vom Benutzer stammen. Bei einer Ausführungsform findet der statische Analysator
118 die relevante Gruppe von Aufrufen in der Web-Anwendung
104 in der Form
wobei es sich bei <x> und <y> um Platzhalter für variable Kennungen handelt, deren statische Typen HttpServletRequest bzw. Boolean lauten. Der statische Analysator
118 prüft anschließend, ob der Wert von <y> verwendet wird, um den Ablauf der Ausführung direkt oder indirekt zu steuern, ohne dass die Web-Anwendung
104 zuerst prüft, ob dieser Wert mit Werten korreliert ist, die durch andere Parameter gehalten werden, die vom Benutzer stammen. Der statische Analysator
118 meldet das verborgene Merkerbit als eine Sicherheitsschwachstelle, falls sicherheitssensible Operationen, die von der Festlegung „getParameter“ erreichbar sind, lediglich durch einen Test an <y> dominiert werden, wenn festgestellt wird, dass serverseitige Prüfmaßnahmen das verborgene Merkerbit nicht adäquat vorgeben, da eine einfache Manipulation des verborgenen Merkerbits vor dem Senden zur Web-Anwendung
104 ausreichend sein kann, um einen gewöhnlichen Benutzer zu einem Administrator zu machen, wodurch dem gewöhnlichen Benutzer möglicherweise die vollständige Kontrolle über die Anwendung gegeben wird.
-
In 3 veranschaulicht ein Blockschaltbild 300 eine beispielhafte Hardware-Umsetzung eines Datenverarbeitungssystems, mit dem eine oder mehrere Komponenten/Methodiken (z.B. Komponenten/Methodiken, die im Kontext der 1 bis 2 beschrieben wurden) gemäß einer Ausführungsform umgesetzt werden können.
-
Wie gezeigt können die Techniken zum Steuern des Zugriffs auf wenigstens eine Ressource dementsprechend mit einem Prozessor 310, einem Speicher 312, E/A-Einheiten 314 und einer Netzwerkschnittstelle 316 umgesetzt werden, die über einen Computerbus 318 oder eine alternative Verbindungsanordnung verbunden sind.
-
Es sollte klar sein, dass der hier verwendete Ausdruck „Prozessor“ jede Verarbeitungseinheit einschließen soll wie z.B. eine Einheit, die eine CPU (Zentraleinheit) und/oder andere Verarbeitungsschaltungen enthält. Es sollte außerdem klar sein, dass der Ausdruck „Prozessor“ mehr als eine Verarbeitungseinheit bezeichnen kann und zahlreiche Elemente, die einer Verarbeitungseinheit zugehörig sind, durch andere Verarbeitungseinheiten gemeinsam genutzt werden können.
-
Der hier verwendete Ausdruck „Speicher“ soll jeden Speicher einschließen, der einem Prozessor oder einer CPU zugehörig ist, wie z.B. RAM, ROM, eine fest eingebaute Speichereinheit (z.B. Festplattenlaufwerk), eine Wechsel-Speichereinheit (z.B. Diskette), ein Flash-Speicher usw. Derartige Speicher können als computerlesbares Speichermedium betrachtet werden.
-
Außerdem sollen die hier verwendeten Ausdrücke „Eingabe/Ausgabe-Einheiten“ oder „E/A-Einheiten“ z.B. eine oder mehrere Eingabe-Einheiten (z.B. Tastatur, Maus, Scanner usw.) zum Eingeben von Daten in die Verarbeitungseinheit und/oder eine oder mehrere Ausgabe-Einheiten (z.B. Lautsprecher, Anzeigen, Drucker usw.) zum Präsentieren von Ergebnissen einschließen, die der Verarbeitungseinheit zugehörig sind .
-
Der Ablaufplan und die Blockschaltbilder in den Figuren veranschaulichen die Architektur, Funktionalität und Operation von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in dem Ablaufplan oder Blockschaltbildern ein Modul, Segment oder Abschnitt von Code repräsentieren, der einen oder mehrere ausführbare Befehle zum Umsetzen der spezifizierten logischen Funktion(en) aufweist. Es sollte außerdem angemerkt werden, dass in einigen alternativen Umsetzungen die in dem Block angegebenen Funktionen nicht in der in den Figuren angegebenen Reihenfolge auftreten. Zum Beispiel können zwei Blöcke, die nacheinander gezeigt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden oder die Blöcke können gelegentlich in Abhängigkeit von der beteiligten Funktionalität in der umgekehrten Reihenfolge ausgeführt werden. Es wird außerdem angemerkt, dass jeder Block in den Blockschaltbildern und/oder Ablaufplan-Darstellungen und Kombinationen von Blöcken in den Blockschaltbildern und/oder AblaufplanDarstellung durch Systeme, die auf spezieller Hardware beruhen, die die spezifizierten Funktionen oder Wirkungen ausführen, oder Kombinationen aus spezieller Hardware und Computerbefehlen umgesetzt werden können.
-
Es ist klar, dass alle hier beschriebenen Elemente als ein Computerprogrammprodukt umgesetzt werden können, das in einem computerlesbaren Medium verkörpert ist, wie z.B. in der Form von Computerprogrammbefehlen, die auf magnetischen oder optischen Speichermedien gespeichert sind oder in Computer-Hardware eingebettet sind und durch einen Computer ausgeführt werden können oder auf andere Weise für einen Computer (nicht gezeigt) erreichbar sind.
-
Obwohl die Verfahren und Vorrichtungen hier möglicherweise nicht unter Bezugnahme auf spezielle Computer-Hardware oder Software beschrieben wurden, ist klar, dass die hier beschriebenen Verfahren und Vorrichtungen in einfacher Weise unter Verwendung von herkömmlichen Techniken in Computer-Hardware oder Software umgesetzt werden können.
-
Zwar wurde die Erfindung unter Bezugnahme auf eine oder mehrere spezielle Ausführungsformen beschrieben, jedoch soll die Beschreibung die Erfindung als Ganzes veranschaulichen und sollte nicht als Einschränkung der Erfindung auf die gezeigten Ausführungsformen ausgelegt werden. Es ist klar, dass für einen Fachmann zahlreiche Modifikationen vorstellbar sind, die trotzdem, obwohl hier nicht speziell gezeigt, im wahren Erfindungsgedanken und Umfang der Erfindung liegen.