-
TECHNISCHES GEBIET DER ERFINDUNG
-
Diese Offenbarung bezieht sich allgemein auf Sicherheitslücken in Bezug auf seitenübergreifendes Scripting in Web-Anwendungen in einem Datenverarbeitungssystem und, genauer gesagt, darauf zu verhindern, dass zerstörerischer Code in einer Skriptsprache einer Web-Anwendung eingebettet wird, auf die durch einen Web-Browser zugegriffen wird.
-
HINTERGRUND DER ERFINDUNG
-
Seitenübergreifendes Scripting (cross-site scripting, XSS) ist ein weit verbreitetes Problem, bei dem in einer Form eine Benutzereingabe von einem Client unverändert in die zurückgegebene Hypertext-Auszeichnungssprachen(HTML)-Ausgabe von einem Server reflektiert oder zurückgemeldet wird. Dieser Typ einer Sicherheitslücke bedeutet, dass ein Angreifer sehr spezifische Nutzdaten erstellen kann, die, wenn sie in der Ausgabe zurückgemeldet werden, ein Skript beinhalten, das in dem Browser ausgeführt wird. Da das Skript als Teil der Ausgabe zurückgegeben wird, hat das Skript Zugriff auf alle Cookies und Daten, die mit der Domäne (z. B. einer Website) in Zusammenhang stehen, die die Ausgabe zurückgegeben hat. Durch Senden der erstellten Nutzdaten an ein entfernt angeordnetes Opfer wird die anfällige Site veranlasst, das zerstörerische Skript zurückzugeben und dabei dem zerstörerischen Skript zu gestatten, ohne durch einen Sicherheitsmechanismus einer Same-Origin-Policy des Browsers angewendete Einschränkungen vollständig mit der anfälligen Site in Wechselwirkung zu treten.
-
Eine besonders einfache Lösung für Cross-Site-Scripting besteht in einer Eingabeprüfung, die jedes Zeichen oder Muster abweist, das in der zurückgegebenen Ausgabe zu einer skriptgesteuerten Aktion führen kann. Eine Eingabeprüfung wird mithilfe eines positiven Sicherheitsmodells, das definiert, was zulässig ist, eines negativen Sicherheitsmodells, das definiert, was nicht zulässig ist, oder einer Kombination von Modellen durchgeführt. In beiden Fällen wird eine Anforderung, die definierte Bedingungen nicht erfüllt, abgewiesen oder modifiziert.
-
Bei dem negativen Sicherheitsmodell werden üblicherweise bekannte Muster von Angriffen zum Blockieren definiert. Beispielsweise kann eine Eingabe mit dem Wert „<script>”, bei der es sich um bekannte Angriffsnutzdaten handelt, blockiert werden. Das Hauptproblem bei diesem Modell besteht darin, bei allen möglichen vorhandenen Exploit-Mustern auf dem Laufenden zu bleiben, insbesondere, wenn generische Muster verwendet werden. Durch eine negative Sicherheitseingabeprüfung wird üblicherweise kein vollständiger Schutz erzielt, und daher wird Entwicklern geraten, nach Möglichkeit ein positives Sicherheitsmodell zu verwenden.
-
Bei dem positiven Sicherheits-Eingabeprüfungsmodell kann aufgrund der Schwierigkeit, ein Cross-Site-Scripting-Problem mit ausschließlich alphanumerischen Zeichen auszunutzen, eine Definition angegeben werden, nach der ausschließlich alphanumerische Zeichen zulässig sind. Das Hauptproblem bei dem positiven Sicherheits-Eingabeprüfungsmodell besteht in einer Möglichkeit, die Anwendung zu unterbrechen. Beispielsweise kann die Logik der Anwendung die Verwendung von potenziell gefährlichen Zeichen erfordern, was zu einer zunehmend schwierigen Aufgabe führt, alle möglichen Cross-Site-Scripting-Angriffsvektoren abzudecken, ohne die Funktion der Anwendung zu unterbrechen.
-
Eine alternative Lösung für Cross-Site-Scripting besteht im Bereinigen der Ausgabe, indem die Ausgabe codiert wird. Durch Codieren der Eingabe, bevor die Eingabe der Ausgabe hinzugefügt wird, wird sichergestellt, dass der Browser die empfangene Eingabe in der Ausgabe nicht als Skript verarbeitet. Da die Eingabe, die zurückgemeldet wird, der Ausgabe in vielen verschiedenen Kontexten hinzugefügt werden kann, darunter als Teil eines zurückgegebenen Attributes, als Wert einer Kennung, innerhalb eines Kommentars oder innerhalb einer Skriptkennung, muss die Codierung der Eingabe dem jeweiligen Kontext entsprechen.
-
Es wird beispielsweise eine Anforderung in den folgenden Codeausschnitten mit der folgenden URL betrachtet:
http://server/welcome.jsp?name=John
-
Das Beispiel gibt den Namensparameter unverändert in zwei verschiedenen Kontexten in einer Ausgabe wie zum Beispiel der folgenden zurück:
-
Um das Cross-Site-Scripting in der „Hello”-Anweisung auszunutzen, würde der Angreifer eine Anforderung wie die folgende senden:
http://server/welcome.jsp?name=John<script>hijack()</script>
-
Die Anforderung wird dann wie folgt zurückgegeben:
-
Das Skript wird aufgrund des ersten zurückgemeldeten Inhalts erfolgreich ausgenutzt, und bei dem Wert in dem Attribut handelt es sich um einen einfachen Wert. Die Lösung dieses Problems bestünde in der Verwendung der HTML-Codierungstechnik und insbesondere im Erzsetzen des Symbols „<” durch das Symbol „<”.
-
Um das Cross-Site-Scripting im zweiten Fall auszunutzen, würde der Angreifer eine andere Anforderung senden, zum Beispiel folgende:
http://server/welcome.jsp?name=John”;hijack()//
-
Die Anforderung wird dann wie folgt zurückgegeben:
-
Das Skript in dem Beispiel wird aufgrund der zweiten Instanz des zurückgemeldeten Inhalts und des neu hinzugefügten JavaScriptTM-Codes (Java und alle Marken und Logos auf der Grundlage von Java sind Marken oder eingetragene Marken von Oracle und/oder seinen verbundenen Unternehmen) erfolgreich ausgenutzt. Der Begrüßungstext bleibt einfacher Text. Die Lösung des Problems des Beispiels bestünde in der Verwendung der STRING-Codierungstechnik, bei der die doppelten Anführungszeichen durch \" (einen umgekehrten Schrägstrich + doppelte Anführungszeichen) ersetzt werden.
-
Die soeben beschriebenen Lösungen sind fundiert und klar strukturiert, erfordern jedoch eine Modifizierung des Anwendungscodes, wobei es sich um einen kostspieligen und bisweilen schwierigen Prozess handelt, insbesondere bei traditionellen Anwendungen, Modulen von Fremdanbietern und ausgegliederten Anwendungen. Die Modifizierung von Code erfordert Zeit, wodurch das System ungeschützt ist, wenn es bereits implementiert ist, bis der Code korrigiert ist.
-
Automatisierte Werkzeuge wie zum Beispiel eine Firewall für eine Web-Anwendung lösen dieses Problem durch Bereitstellen einer Eingabebereinigungslösung. Eine Eingabebereinigung verwendet üblicherweise negative Sicherheitsmuster, zum Beispiel komplizierte reguläre Ausdrücke, die versuchen, alle möglichen Nutzdaten auszuschließen. Dieser Ansatz ist zweckdienlich, jedoch nur eine Teillösung, da mögliche Varianten von Cross-Site-Scripting-Angriffen praktisch unbegrenzt sind. Die Werkzeuge bieten häufig allgemeine negative Sicherheitsregeln, die angeben, welche Muster nicht zulässig sind, und ermöglichen dem Benutzer, konkretere Sicherheitsregeln zu bestimmen, diese Regeln sind jedoch schwierig zu pflegen. Daher besteht ein Bedarf nach einer automatisierten Lösung für Einschleusungsangriffe wie zum Beispiel Cross-Site-Scripting-Angriffe.
-
US 2008/0 263 650 offenbart eine wirksame Abwehr von seitenübergreifenden Angriffen, bei der Web-Seiten auf einer Site gespeichert werden. Die Web-Seiten werden in Einstiegsseiten, die keine Eingabe zulassen, und in geschützte Seiten geordnet, bei denen es sich nicht um Einstiegsseiten handelt.
-
US 2007/0 113 282 offenbart eine Einheit zum Empfangen und Verarbeiten von Dateninhalt, der zumindest einen Aufruf einer ursprünglichen Funktion aufweist, die einen Hook-Skriptgenerator und ein Skriptverarbeitungsmodul beinhaltet. Der Hook-Skriptgenerator ist so konfiguriert, dass er ein Hook-Skript erzeugt, das zumindest eine Hook-Funktion aufweist. Jede Hook-Funktion ist so konfiguriert, dass sie eine entsprechende ursprüngliche Funktion ersetzt. Die Hook-Funktion stellt eine Erkennung und Steuerung der Dateninhaltsverarbeitung zur Laufzeit bereit.
-
US 2004/0 260 754 offenbart ein Verfahren zum Entschärfen von Cross-Site-Scripting-Angriffen. Wenn eine HTTP-Anforderung von einem Benutzercomputer empfangen wird, wird die HTTP-Anforderung ausgewertet, um festzustellen, ob sie eine Skriptkonstruktion beinhaltet. Insbesondere werden Daten auf das Vorhandensein von Skriptkonstruktionen untersucht, die von einer externen Quelle stammen, die in der HTTP-Anforderung enthalten ist. Das Vorhandensein einer Skriptkonstruktion weist darauf hin, dass ein Cross-Site-Scripting-Angriff ausgeführt wird, und der Server-Computer ist in der Lage zu verhindern, dass der Angriff durchgeführt wird.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Gemäß einer Ausführungsform ein computerimplementierter Prozess zum Entschärfen von Einschleusungsangriffen. Der computerimplementierte Prozess überwacht sämtlichen eingehenden Datenverkehr und ausgehenden Datenverkehr, um einen überwachten Datenverkehr zu bilden, ermittelt, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden, und speichert in Reaktion auf eine Ermittlung, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, den übereinstimmenden Eingabewert. Der computerimplementierte Prozess ermittelt des Weiteren, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, und codiert in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, den übereinstimmenden Eingabewert mithilfe einer jeweiligen Definition aus einer Konfigurationsdatei und gibt die Ausgabe an den Anforderer zurück.
-
Gemäß einer weiteren Ausführungsform umfasst ein Computerprogrammprodukt zum Entschärfen von Einschleusungsangriffen ein computerbeschreibbares Medium, das einen darauf gespeicherten computerausführbaren Programmcode enthält. Der computerausführbare Programmcode umfasst einen computerausführbaren Programmcode zum Überwachen sämtlichen eingehenden Datenverkehrs und ausgehenden Datenverkehrs, um einen überwachten Datenverkehr zu bilden, einen computerausführbaren Programmcode zum Ermitteln, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden, einen computerausführbaren Programmcode, der auf eine Ermittlung reagiert, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um den übereinstimmenden Eingabewert zu speichern, einen computerausführbaren Programmcode zum Ermitteln, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, einen computerausführbaren Programmcode, der auf eine Ermittlung reagiert, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, um den übereinstimmenden Eingabewert mithilfe einer jeweiligen Definition aus einer Konfigurationsdatei zu codieren, und einen computerausführbaren Programmcode zum Zurückgeben der Ausgabe an den Anforderer.
-
Gemäß einer weiteren Ausführungsform umfasst eine Vorrichtung zum Entschärfen von Einschleusungsangriffen eine Datenaustauschstruktur, einen Speicher, der mit der Datenaustauschstruktur verbunden ist, wobei der Speicher computerausführbaren Programmcode enthält, eine mit der Datenaustauschstruktur verbundene Datenaustauscheinheit, eine mit der Datenaustauschstruktur verbundene Eingabe/Ausgabe-Einheit, eine mit der Datenaustauschstruktur verbundene Anzeige und eine mit der Datenaustauschstruktur verbundene Prozessoreinheit. Die Prozessoreinheit führt den computerausführbaren Programmcode aus, um die Vorrichtung so zu steuern, dass sie sämtlichen eingehenden Datenverkehr und ausgehenden Datenverkehr überwacht, um einen überwachten Datenverkehr zu bilden, dass sie ermittelt, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden, und dass sie in Reaktion auf eine Ermittlung, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, den übereinstimmenden Eingabewert speichert. Die Prozessoreinheit führt des Weiteren den computerausführbaren Programmcode aus, um die Vorrichtung so zu steuern, dass sie ermittelt, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, und in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, den übereinstimmenden Eingabewert mithilfe einer jeweiligen Definition aus einer Konfigurationsdatei codiert und die Ausgabe an den Anforderer zurückgibt.
-
Von einem ersten Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Verfahren bereit, um zu verhindern, dass zerstörerischer Code innerhalb einer Skriptsprache einer Web-Anwendung eingebettet wird, auf die durch einen Web-Browser zugegriffen wird, wobei das Verfahren Folgendes umfasst: Überwachen sämtlichen eingehenden Datenverkehrs, der durch den Web-Browser erzeugt wird, und ausgehenden Datenverkehrs, der durch einen Server erzeugt wird, um einen überwachten Datenverkehr zu bilden; Ermitteln, ob ein eindeutiges Element, das in einer Konfigurationsdatei definiert ist, mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden; in Reaktion auf eine Ermittlung, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, Speichern des übereinstimmenden Eingabewertes, wobei ermittelt wird, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält; in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, Codieren des übereinstimmenden Eingabewertes mithilfe einer jeweiligen Definition aus einer Konfigurationsdatei; und Zurückgeben der Ausgabe an den Anforderer.
-
Die vorliegende Erfindung stellt bevorzugt ein Verfahren bereit, wobei das Ermitteln, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, des Weiteren Folgendes umfasst: Ermitteln, ob ein jeweiliges eindeutiges Element in der Ausgabe zurückgemeldet wird; und Identifizieren einer Position und eines Kontextes, die einem eindeutigen Element zugehörig sind, in der Ausgabe, wobei das Ermitteln und Identifizieren des Weiteren eine Einschleusung von eindeutigen Werten beinhaltet.
-
Die vorliegende Erfindung stellt bevorzugt ein Verfahren bereit, wobei das Ermitteln, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, des Weiteren Folgendes umfasst: Identifizieren einer Seite einer Anwendung und zugehöriger Eingaben der Seite, um einen Satz von identifizierten Eingaben zu bilden; Umwandeln jeder Eingabe in dem Satz von identifizierten Eingaben, um ein jeweiliges eindeutiges Element zu bilden; und erneutes Senden der Eingabe mithilfe der jeweiligen eindeutigen Elemente.
-
Die vorliegende Erfindung stellt bevorzugt ein Verfahren bereit, wobei das Identifizieren einer Position und eines Kontextes, die einem eindeutigen Element zugehörig sind, in der Ausgabe des Weiteren Folgendes umfasst: Exportieren eines Überprüfungsergebnisses in die Konfigurationsdatei.
-
Die vorliegende Erfindung stellt bevorzugt ein Verfahren bereit, wobei die Konfigurationsdatei eine Liste jeder Eingabe des Satzes von identifizierten Eingaben und jeweiligen erwarteten Ausgabepositionen und -kontexten enthält.
-
Die vorliegende Erfindung stellt bevorzugt ein Verfahren bereit, wobei in Reaktion auf eine Ermittlung, dass das eindeutige Element nicht mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, die Überwachung sämtlichen eingehenden und ausgehenden Datenverkehrs fortgesetzt wird.
-
Die vorliegende Erfindung stellt bevorzugt ein Verfahren bereit, wobei in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert nicht an einer erwarteten Position enthält, der übereinstimmende Eingabewert mithilfe einer Standarddefinition codiert wird.
-
Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Computerprogrammprodukt zum Entschärfen von Einschleusungsangriffen bereit, wobei das Computerprogrammprodukt Folgendes umfasst: ein computerbeschreibbares Medium, das darauf gespeicherten computerausführbaren Programmcode enthält, wobei der computerausführbare Programmcode Folgendes umfasst: einen computerausführbaren Programmcode zum Überwachen sämtlichen eingehenden Datenverkehrs und ausgehenden Datenverkehrs, um einen überwachten Datenverkehr zu bilden; einen computerausführbaren Programmcode zum Ermitteln, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden, einen computerausführbaren Programmcode, der auf eine Ermittlung reagiert, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um den übereinstimmenden Eingabewert zu speichern, einen computerausführbaren Programmcode zum Ermitteln, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält; einen computerausführbaren Programmcode, der auf eine Ermittlung reagiert, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, um den übereinstimmenden Eingabewert mithilfe einer jeweiligen Definition aus einer Konfigurationsdatei zu codieren; und einen computerausführbaren Programmcode zum Zurückgeben der Ausgabe an den Anforderer.
-
Die vorliegende Erfindung stellt bevorzugt ein Computerprogrammprodukt bereit, wobei der computerausführbare Programmcode zum Ermitteln, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, des Weiteren Folgendes umfasst: einen computerausführbaren Programmcode zum Identifizieren einer Seite einer Anwendung und zugehöriger Eingaben der Seite, um einen Satz von identifizierten Eingaben zu bilden; einen computerausführbaren Programmcode zum Umwandeln jeder Eingabe in dem Satz von identifizierten Eingaben, um ein jeweiliges eindeutiges Element zu bilden; und einen computerausführbaren Programmcode zum erneuten Senden der Ausgabe mithilfe der jeweiligen eindeutigen Elemente.
-
Die vorliegende Erfindung stellt bevorzugt ein Computerprogrammprodukt bereit, wobei der computerausführbare Programmcode zum Ermitteln, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, des Weiteren Folgendes umfasst: einen computerausführbaren Programmcode zum Ermitteln, ob ein jeweiliges eindeutiges Element in der Ausgabe zurückgemeldet wird; und einen computerausführbaren Programmcode zum Identifizieren einer Position und eines Kontextes, die einem eindeutigen Element zugehörig sind, in der Ausgabe, wobei der computerausführbare Programmcode zum Ermitteln und Identifizieren des Weiteren einen computerausführbaren Programmcode zum Einschleusen von eindeutigen Werten beinhaltet.
-
Die vorliegende Erfindung stellt bevorzugt ein Computerprogrammprodukt bereit, wobei der computerausführbare Programmcode zum Identifizieren einer Position und eines Kontextes, die einem eindeutigen Element zugehörig sind, in der Ausgabe des Weiteren Folgendes umfasst: einen computerausführbaren Programmcode zum Exportieren eines Überprüfungsergebnisses in die Konfigurationsdatei.
-
Die vorliegende Erfindung stellt bevorzugt ein Computerprogrammprodukt bereit, wobei die Konfigurationsdatei eine Liste jeder Eingabe des Satzes von identifizierten Eingaben und jeweiligen erwarteten Ausgabepositionen und -kontexten enthält.
-
Die vorliegende Erfindung stellt bevorzugt ein Computerprogrammprodukt bereit, wobei der computerausführbare Programmcode, der auf eine Ermittlung reagiert, dass das eindeutige Element nicht mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, des Weiteren einen computerausführbaren Programmcode zum Fortsetzen der Überwachung sämtlichen eingehenden und ausgehenden Datenverkehrs umfasst.
-
Die vorliegende Erfindung stellt bevorzugt ein Computerprogrammprodukt bereit, wobei ein computerausführbarer Programmcode, der auf eine Ermittlung reagiert, dass die Ausgabe den übereinstimmenden Eingabewert nicht an einer erwarteten Position enthält, des Weiteren einen computerausführbaren Programmcode zum Codieren des übereinstimmenden Eingabewertes mithilfe einer Standarddefinition umfasst.
-
Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung eine Vorrichtung zum Entschärfen von Einschleusungsangriffen bereit, wobei die Vorrichtung Folgendes umfasst: eine Datenaustauschstruktur, einen Speicher, der mit der Datenaustauschstruktur verbunden ist, wobei der Speicher computerausführbaren Programmcode enthält; eine mit der Datenaustauschstruktur verbundene Datenaustauscheinheit; eine mit der Datenaustauschstruktur verbundene Eingabe/Ausgabe-Einheit; eine mit der Datenaustauschstruktur verbundene Anzeige; und eine mit der Datenaustauschstruktur verbundene Prozessoreinheit, wobei die Prozessoreinheit den computerausführbaren Programmcode ausführt, um die Vorrichtung zu Folgendem zu steuern: Überwachen sämtlichen eingehenden Datenverkehrs und ausgehenden Datenverkehrs, um einen überwachten Datenverkehr zu bilden; Ermitteln, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden; in Reaktion auf eine Ermittlung, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, Speichern des übereinstimmenden Eingabewertes, Ermitteln, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält; in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, Codieren des übereinstimmenden Eingabewertes mithilfe einer jeweiligen Definition aus einer Konfigurationsdatei; und Zurückgeben der Ausgabe an den Anforderer.
-
Die vorliegende Erfindung stellt bevorzugt eine Vorrichtung bereit, in der die Prozessoreinheit des Weiteren den computerausführbaren Programmcode ausführt, um zu ermitteln, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um die Vorrichtung zu Folgendem zu steuern: Identifizieren einer Seite einer Anwendung und zugehöriger Eingaben der Seite, um einen Satz von identifizierten Eingaben zu bilden; Umwandeln jeder Eingabe in dem Satz von identifizierten Eingaben, um ein jeweiliges eindeutiges Element zu bilden; und erneutes Senden der Eingabe mithilfe der jeweiligen eindeutigen Elemente.
-
Die vorliegende Erfindung stellt bevorzugt eine Vorrichtung bereit, in der die Prozessoreinheit des Weiteren den computerausführbaren Programmcode ausführt, um zu ermitteln, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, um die Vorrichtung zu Folgendem zu steuern: Ermitteln, ob ein jeweiliges eindeutiges Element in der Ausgabe zurückgemeldet wird; und Identifizieren einer Position und eines Kontextes, die in der Ausgabe einem eindeutigen Element zugehörig sind, in der die Vorrichtung zum Ermitteln und Identifizieren weiterer Anzeigeoptionen zum Einschleusen eindeutiger Werte gesteuert wird.
-
Die vorliegende Erfindung stellt bevorzugt eine Vorrichtung bereit, wobei die Prozessoreinheit des Weiteren den computerausführbaren Programmcode ausführt, um eine Position und einen Kontext, die einem eindeutigen Element zugehörig sind, in der Ausgabe zu identifizieren, um die Vorrichtung zu Folgendem zu steuern: Exportieren eines Überprüfungsergebnisses in die Konfigurationsdatei.
-
Die vorliegende Erfindung stellt bevorzugt eine Vorrichtung bereit, wobei die Konfigurationsdatei eine Liste jeder Eingabe des Satzes von identifizierten Eingaben und jeweiligen erwarteten Ausgabepositionen und -kontexten enthält.
-
Die vorliegende Erfindung stellt bevorzugt eine Vorrichtung bereit, wobei die Prozessoreinheit des Weiteren den computerausführbaren Programmcode in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert nicht an einer erwarteten Position enthält, ausführt, um die Vorrichtung so zu steuern, dass sie den übereinstimmenden Eingabewert mithilfe einer Standarddefinition codiert.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Eine bevorzugte Ausführungsform der vorliegenden Erfindung wird nun lediglich als Beispiel unter Bezugnahme auf die beigefügten Zeichnungen beschrieben, für die gilt:
-
1 ist ein Blockschaubild eines beispielhaften Netzwerk-Datenverarbeitungssystems, das für verschiedene bevorzugte Ausführungsformen der vorliegenden Erfindung eingesetzt werden kann;
-
2 ist ein Blockschaubild eines beispielhaften Datenverarbeitungssystems in dem Netzwerk-Datenverarbeitungssystem von 1, das für verschiedene bevorzugte Ausführungsformen der vorliegenden Erfindung eingesetzt werden kann;
-
3 ist ein Blockschaubild eines Systems zum Entschärfen von Einschleusungsangriffen gemäß verschiedener bevorzugter Ausführungsformen der vorliegenden Erfindung;
-
4 ist ein Ablaufplan eines Prozesses unter Verwendung des Systems zum Entschärfen von Einschleusungsangriffen von 3 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung; und
-
5 ist ein Ablaufplan eines Konfigurationsdatei-Erstellungsprozesses, der mit dem Prozess von 4 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung verwendet wird.
-
GENAUE BESCHREIBUNG DER ERFINDUNG
-
Wenngleich im Folgenden eine veranschaulichende Umsetzung einer oder mehrerer Ausführungsformen bereitgestellt wird, können die offenbarten Systeme und/oder Verfahren mithilfe einer beliebigen Anzahl von Techniken umgesetzt werden. Diese Offenbarung soll in keiner Weise auf die veranschaulichenden Umsetzungen, Zeichnungen und Techniken, die im Folgenden veranschaulicht werden, wie zum Beispiel die hierin veranschaulichten und beschriebenen beispielhaften Entwürfe und Umsetzungen beschränkt werden, sondern sie kann innerhalb des Umfangs der beigefügten Ansprüche zusammen mit dem vollen Umfang ihrer gleichartigen Ansprüche modifiziert werden.
-
Wie für einen Fachmann zu erkennen ist, kann die vorliegende Offenbarung als System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend kann die vorliegende Offenbarung eine reine Hardware-Ausführungsform, eine reine Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder eine Ausführungsform annehmen, in der Software- und Hardware-Aspekte kombiniert werden, die sämtlich hierin verallgemeinernd als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Des Weiteren kann die vorliegende Erfindung die Form eines Computerprogrammprodukts annehmen, das greifbar in einem beliebigen Ausdrucksmedium verkörpert ist, wobei computerverwendbarer Programmcode in dem Medium verkörpert ist.
-
Computerprogrammcode zum Ausführen von Vorgängen der vorliegenden Offenbarung kann in jeder Kombination einer oder mehrerer Programmiersprachen geschrieben werden, zum Beispiel in einer objektorientierten Programmiersprache wie etwa JavaTM, Smalltalk, C++ oder dergleichen und in herkömmlichen verfahrensorientierten Programmiersprachen wie zum Beispiel der Programmiersprache „C” oder ähnlichen Programmiersprachen. Java und alle Marken und Logos auf der Grundlage von Java sind Marken oder eingetragene Marken von Oracle und/oder seinen verbundenen Unternehmen. Der Programmcode kann vollständig auf dem Computer des Benutzers, zum Teil auf dem Computer des Benutzers, als eigenständiges Software-Paket, zum Teil auf dem Computer des Benutzers und zum Teil auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jede Art von Netzwerk verbunden sein, zum Beispiel durch ein lokales Netzwerk (local area network, LAN) oder ein Weitverkehrs-Netzwerk (wide area network, WAN), oder die Verbindung kann mit einem externen Computer (zum Beispiel über das Internet mithilfe eines Internet-Diensteanbieters) hergestellt werden.
-
Die vorliegende Offenbarung wird nachfolgend unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen, Systemen und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Computerprogrammbefehle umgesetzt werden kann/können.
-
Diese Computerprogrammbefehle können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Befehle, die über den Prozessor des Computers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Umsetzen der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind. Diese Computerprogrammbefehle können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer oder eine sonstige programmierbare Datenverarbeitungsvorrichtung so steuern kann, dass sie in einer bestimmten Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Befehle einen hergestellten Gegenstand (article of manufacture) erzeugen, der Befehlsmittel beinhaltet, die die Funktion/Handlung umsetzen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben ist.
-
Die Computerprogrammbefehle können außerdem auf einen Computer oder eine sonstige programmierbare Datenverarbeitungsvorrichtung geladen werden, um zu bewirken, dass eine Reihe von Schritten eines Vorgangs auf dem Computer oder einer sonstigen programmierbaren Vorrichtung ausgeführt wird, um einen computerimplementierten Prozess zu erzeugen, sodass die auf dem Computer oder einer sonstigen programmierbaren Vorrichtung ausgeführten Befehle Prozesse bereitstellen, um die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Vorgänge umzusetzen.
-
Es werden nun unter Bezugnahme auf die Figuren und insbesondere unter Bezugnahme auf 1 und 2 beispielhafte Schaubilder von Datenverarbeitungsumgebungen bereitgestellt, in denen veranschaulichende Ausführungsformen umgesetzt werden können. Es ist zu beachten, dass 1 und 2 lediglich als Beispiele dienen und nicht dazu bestimmt sind, eine Einschränkung in Bezug auf die Umgebungen, in denen verschiedene Ausführungsformen umgesetzt werden können, geltend zu machen oder zu implizieren. Es können zahlreiche Modifizierungen an den dargelegten Umgebungen vorgenommen werden.
-
1 legt eine bildliche Darstellung eines Netzwerks von Datenverarbeitungssystemen dar, in dem veranschaulichende Umgebungen umgesetzt werden können. Bei einem Netzwerk-Datenverarbeitungssystem 100 handelt es sich um ein Netzwerk von Computern, in dem die veranschaulichenden Ausführungsformen umgesetzt werden können. Das Netzwerk-Datenverarbeitungssystem 100 enthält ein Netzwerk 102, bei dem es sich um das Medium handelt, das zum Bereitstellen von Datenaustauschverbindungen zwischen verschiedenen Einheiten und Computern verwendet wird, die innerhalb des Netzwerk-Datenverarbeitungssystems 100 miteinander verbunden sind. Das Netzwerk 102 kann Verbindungen wie zum Beispiel drahtgebundene und drahtlose Datenaustauschverbindungen oder Lichtwellenleiterkabel beinhalten.
-
In dem dargelegten Beispiel sind ein Server 104 und ein Server 106 zusammen mit einer Speichereinheit 108 mit dem Netz 102 verbunden. Darüber hinaus sind Clients 110, 112 und 114 mit dem Netzwerk 102 verbunden. Bei den Clients 110, 112 und 114 kann es sich zum Beispiel um Personalcomputer oder Netzwerkcomputer handeln. In dem dargelegten Beispiel stellt der Server 104 den Clients 110, 112 und 114 Daten wie zum Beispiel Startdateien, Betriebssystemabbilder und Anwendungen bereit. In diesem Beispiel handelt es sich bei den Clients 110, 112 und 114 um Clients des Servers 104. Das Netzwerk-Datenverarbeitungssystem 100 kann zusätzliche Server, Clients und sonstige Einheiten beinhalten, die nicht dargestellt sind.
-
In dem dargestellten Beispiel handelt es sich bei dem Netzwerk-Datenverarbeitungssystem 100 um das Internet, wobei das Netzwerk 102 einen weltweiten Bestand von Netzwerken und Gateways darstellt, die die Transmission-Control-Protocol/Internet-Protocol(TCP/IP)-Gruppe von Protokollen dazu verwenden, Daten miteinander auszutauschen. Im Kern des Internet befindet sich eine Zentralverbindung aus Hochgeschwindigkeits-Datenaustauschverbindungen zwischen Hauptknoten oder Host-Computern, die aus Tausenden von kommerziellen, behördlichen, Bildungs- und sonstigen Computersystemen bestehen, die Daten und Nachrichten weiterleiten. Selbstverständlich kann das Netzwerk-Datenverarbeitungssystem 100 auch als eine Reihe verschiedener Netzwerktypen wie zum Beispiel ein Intranet, ein lokales Netzwerk (LAN) oder ein Weitverkehrs-Netzwerk (WAN) umgesetzt werden. 1 ist als Beispiel gemeint und nicht als architektonische Einschränkung der verschiedenen veranschaulichenden Ausführungsformen.
-
Was 2 betrifft, so wird ein Blockschaubild eines beispielhaften Datenverarbeitungssystems dargestellt, das für verschiedene Ausführungsformen der Offenbarung eingesetzt werden kann. Bei diesem veranschaulichenden Beispiel beinhaltet ein Datenverarbeitungssystem 200 eine Datenaustauschstruktur 202, die einen Datenaustausch zwischen einer Prozessoreinheit 204, einem Speicher 206, einem nichtflüchtigen Speicher 208, einer Datenaustauscheinheit 210, einer Eingabe/Ausgabe(E/A)-Einheit 212 und einer Anzeige 214 bereitstellt.
-
Die Prozessoreinheit 204 dient zum Ausführen von Befehlen für Software, die in den Speicher 206 geladen werden kann. Bei der Prozessoreinheit 204 kann es sich abhängig von der jeweiligen Umsetzung um einen Satz aus einem oder mehreren Prozessoren oder um einen Mehrprozessorkern handeln. Des Weiteren kann die Prozessoreinheit 204 mithilfe eines oder mehrerer heterogener Prozessorsysteme umgesetzt werden, in denen sich ein Hauptprozessor mit untergeordneten Prozessoren auf einem einzigen Chip befindet. Als weiteres veranschaulichendes Beispiel kann es sich bei der Prozessoreinheit 204 um ein symmetrisches Mehrprozessorsystem handeln, das mehrere Prozessoren desselben Typs enthält.
-
Der Speicher 206 und der nichtflüchtige Speicher 208 sind Beispiele für Speichereinheiten 216. Eine Speichereinheit ist eine Hardware, die in der Lage ist, Informationen wie Daten, Programmcode in funktionaler Form und/oder sonstige Daten entweder zeitweilig und/oder dauerhaft zu speichern, wobei die genannten Beispiele keine Einschränkung bedeuten sollen. Bei dem Speicher 206 kann es sich in diesen Beispielen etwa um einen Direktzugriffsspeicher oder eine beliebige sonstige geeignete flüchtige oder nichtflüchtige Speichereinheit handeln. Der nichtflüchtige Speicher 208 kann abhängig von der jeweiligen Umsetzung verschiedene Formen annehmen. Beispielsweise kann der nichtflüchtige Speicher 208 eine oder mehrere Komponenten oder Einheiten enthalten. Bei dem nichtflüchtigen Speicher 208 kann es sich zum Beispiel um eine Festplatte, einen Flash-Speicher, eine wiederbeschreibbare optische Speicherplatte, ein wiederbeschreibbares Magnetband oder um eine Kombination der Obigen handeln. Die durch den nichtflüchtigen Speicher 208 verwendeten Medien können auch auswechselbar sein. Beispielsweise kann eine Wechselfestplatte als nichtflüchtiger Speicher 208 verwendet werden.
-
Die Datenaustauscheinheit 210 stellt in diesen Beispielen einen Datenaustausch mit sonstigen Datenverarbeitungssystemen oder -einheiten bereit. In diesen Beispielen handelt es sich bei der Datenaustauscheinheit 210 um eine Netzwerk-Schnittstellenkarte. Die Datenaustauscheinheit 210 kann einen Datenaustausch durch die Verwendung entweder von physischen oder von drahtlosen Datenaustauschverbindungen oder unter Verwendung beider bereitstellen.
-
Die Eingabe/Ausgabe-Einheit 212 ermöglicht die Eingabe und Ausgabe von Daten mit sonstigen Einheiten, die mit dem Datenverarbeitungssystem 200 verbunden sein können. Die Eingabe/Ausgabe-Einheit 212 kann zum Bespiel eine Verbindung für Benutzereingaben durch eine Tastatur, eine Maus und/oder eine sonstige geeignete Eingabeeinheit bereitstellen. Des Weiteren kann die Eingabe/Ausgabe-Einheit 212 Ausgaben an einen Drucker senden. Die Anzeige 214 stellt einen Mechanismus zum Anzeigen von Daten für einen Benutzer bereit.
-
Befehle für das Betriebssystem, Anwendungen und/oder Programme können sich in den Speichereinheiten 216 befinden, die durch die Datenaustauschstruktur 202 Daten mit der Prozessoreinheit 204 austauschen. In diesen veranschaulichenden Beispielen liegen die Befehle in einer funktionalen Form in dem nichtflüchtigen Speicher 208 vor. Diese Befehle können zur Ausführung durch die Prozessoreinheit 204 in den Speicher 206 geladen werden. Die Prozesse der verschiedenen Ausführungsformen können durch die Prozessoreinheit 204 mithilfe von computerimplementierten Befehlen ausgeführt werden, die sich in einem Speicher wie zum Beispiel dem Speicher 206 befinden können.
-
Diese Befehle werden als Programmcode, computerverwendbarer Programmcode oder computerlesbarer Programmcode bezeichnet, der von einem Prozessor in der Prozessoreinheit 204 gelesen und ausgeführt werden kann. Der Programmcode in den verschiedenen Ausführungsformen kann auf verschiedenen physischen oder greifbaren computerlesbaren Medien wie zum Beispiel dem Speicher 206 oder dem nichtflüchtigen Speicher 208 verkörpert sein.
-
Der Programmcode 218 befindet sich in einer funktionalen Form auf computerlesbaren Medien 220, die selektiv entfernbar sind, und kann zur Ausführung durch die Prozessoreinheit 204 in das Datenverarbeitungssystem 200 geladen oder übertragen werden. Der Programmcode 218 und die computerlesbaren Medien 220 bilden in diesen Beispielen ein Computerprogrammprodukt 222. In einem Beispiel können die computerlesbaren Medien 220 in einer greifbaren Form wie zum Beispiel als optische Platte oder Magnetplatte vorliegen, die zur Übertragung auf eine Speichereinheit wie zum Beispiel ein Festplattenlaufwerk, das einen Teil des nichtflüchtigen Speichers 208 bildet, in ein Laufwerk oder eine sonstige Einheit eingelegt werden, bei der es sich um einen Teil des nichtflüchtigen Speichers 208 handelt. In einer greifbaren Form können die computerlesbaren Medien 220 auch die Form eines nichtflüchtigen Speichers wie zum Beispiel eines Festplattenlaufwerks, eines USB-Speichersticks oder eines Flash-Speichers annehmen, das/der mit dem Datenverarbeitungssystem 200 verbunden ist. Die greifbare Form der computerlesbaren Medien 220 wird auch als computerbeschreibbares Speichermedium bezeichnet. In einigen Fällen ist es möglich, dass die computerlesbaren Medien 220 nicht entfernbar sind.
-
Alternativ kann der Programmcode 218 von den computerlesbaren Medien 220 durch eine Datenaustauschverbindung mit der Datenaustauscheinheit 210 und/oder durch eine Verbindung mit der Eingabe/Ausgabe-Einheit 212 zu dem Datenverarbeitungssystem 200 übertragen werden. Die Datenaustauschverbindung und/oder die Verbindung können in den veranschaulichenden Beispielen physisch oder drahtlos sein. Die computerlesbaren Medien können außerdem die Form von nicht greifbaren Medien wie zum Beispiel Datenaustauschverbindungen oder drahtlosen Übertragungen annehmen, die den Programmcode enthalten.
-
In einigen veranschaulichenden Ausführungsformen kann der Programmcode 218 zur Verwendung innerhalb des Datenverarbeitungssystems 200 von einer/einem weiteren Einheit oder Datenverarbeitungssystem über ein Netzwerk in den nichtflüchtigen Speicher 208 heruntergeladen werden. Beispielsweise kann in einem computerlesbaren Speichermedium in einem Server-Datenverarbeitungssystem gespeicherter Programmcode über ein Netzwerk von dem Server auf das Datenverarbeitungssystem 200 heruntergeladen werden. Bei dem Datenverarbeitungssystem, das den Programmcode 218 bereitstellt, kann es sich um einen Server-Computer, einen Client-Computer oder eine sonstige Einheit handeln, die in der Lage sind, den Programmcode 218 zu speichern und zu übertragen.
-
Mithilfe des Datenverarbeitungssystems 100 von 1 als Beispiel können ein Server wie etwa der Server 104 und ein Client wie etwa der Client 110, beide von 1, auf charakteristischen Systemen entweder getrennt oder auf demselben System umgesetzt werden. Des Weiteren können ein Proxy und ein Server auf demselben oder einem anderen Server wie zum Beispiel dem Server 104 umgesetzt werden, wobei der Proxy einen Client wie zum Beispiel den Client 110 von dem Anwendungs-Server trennt. Bei einer veranschaulichenden Ausführungsform einer Vorrichtung zum Entschärfen einer Einschleusung überwacht eine Prozessoreinheit wie zum Beispiel die Prozessoreinheit 204 von 2 sämtlichen eingehenden und ausgehenden Datenverkehr, der durch die Datenaustauscheinheit 210 von 2 empfangen wird, um einen überwachten Datenverkehr zu bilden. Die Prozessoreinheit 204 ermittelt, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden, und speichert in Reaktion auf eine Ermittlung, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, den übereinstimmenden Eingabewert in den Speichereinheiten 216 von 2. Die Prozessoreinheit 204 ermittelt des Weiteren, ob eine Ausgabe von dem Anwendungs-Server auf dem Server 104 den übereinstimmenden Eingabewert an einer erwarteten Position enthält, und codiert in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, den übereinstimmenden Eingabewert mithilfe einer jeweiligen Definition aus der Konfigurationsdatei. Die Prozessoreinheit 204 gibt die Ausgabe mithilfe der Datenaustauscheinheit 210 an den Anforderer zurück.
-
In einem weiteren Beispiel umfasst ein computerimplementierter Prozess zum Entschärfen von Einschleusungsangriffen, der den Programmcode 218 verwendet, der in dem Speicher 206 oder als Computerprogrammprodukt 222 gespeichert ist, ein computerbeschreibbares Speichermedium wie zum Beispiel das computerbeschreibbare Medium 220, das darauf gespeicherten computerausführbaren Programmcode enthält. Der computerausführbare Programmcode umfasst einen computerausführbaren Programmcode für einen computerimplementierten Prozess zum Entschärfen von Einschleusungsangriffen.
-
Bei einer weiteren veranschaulichenden Ausführungsform kann der Prozess zum Entschärfen von Einschleusungsangriffen in einer Vorrichtung umgesetzt werden, die eine Datenaustauschstruktur, einen Speicher, der mit der Datenaustauschstruktur verbunden ist, wobei der Speicher computerausführbaren Programmcode enthält, eine mit der Datenaustauschstruktur verbundene Datenaustauscheinheit, eine mit der Datenaustauschstruktur verbundene Eingabe/Ausgabe-Einheit, eine mit der Datenaustauschstruktur verbundene Anzeige und eine mit der Datenaustauschstruktur verbundene Prozessoreinheit umfasst. Die Prozessoreinheit der Vorrichtung führt den computerausführbaren Programmcode aus, um die Vorrichtung so zu steuern, dass sie den Prozess zum Entschärfen von Einschleusungsangriffen durchführt.
-
Unter Bezugnahme auf 3 wird ein Blockschaubild eines Systems zum Entschärfen von Einschleusungsangriffen gemäß verschiedenen Ausführungsformen der Offenbarung dargestellt. Bei einem System 300 zum Entschärfen von Einschleusungsangriffen handelt es sich um ein Beispiel für ein Datenverarbeitungssystem, das um eine Funktion zum Entschärfen eines Einschleusungsangriffs wie zum Beispiel eines Cross-Site-Scripting-Angriffs erweitert ist.
-
Das System 300 zum Entschärfen von Einschleusungsangriffen stellt eine Anzahl von Komponenten in drei Hauptbereichen, darunter in denjenigen von Client-Diensten 302, Proxy-Diensten 304 und Anwendungsdiensten bereit 306. Die Client-Dienste 302 beinhalten einen typischen Browser wie zum Beispiel einen Browser 308, um beispielsweise eine überwachte Eingabe 310 und eine Eingabe 316 einzugeben und eine Ausgabe in Form einer codierten Ausgabe 330 zu empfangen.
-
Die Proxy-Dienste 304 werden durch einen Proxy 312 bereitgestellt, der einen Bildschirm 314, eine Überprüfungseinheit 322 und eine Codiereinheit 328 beinhaltet. Der Bildschirm 314 stellt eine Funktion zum Überwachen des eingehenden und ausgehenden Datenverkehrs zwischen dem Browser 308 und einem Server 318 bereit. Der überwachte eingehende Datenverkehr beinhaltet die überwachte Eingabe 310 und die Eingabe 316, während der überwachte ausgehende Datenverkehr eine Ausgabe 326 und die codierte Ausgabe 330 beinhaltet. Das Überwachen wird verwendet, um zu ermitteln, welche Codefragmente innerhalb des Eingabedatenstroms und in welchem Kontext verarbeitet werden müssen.
-
Der Proxy 312 ist logisch oder physisch zwischen dem Browser 308 und einer Web-Anwendung wie zum Beispiel einer überprüften Web-Anwendung 320 auf dem Server 318 angeordnet, um jegliche Eingabe, die in der Ausgabe reflektiert wird, programmgesteuert zu codieren und dadurch zu verhindern, dass eine reflektierte Eingabe durch die Hypertext-Auszeichnungssprache als Skript interpretiert wird. Die Umsetzung blockiert wirksam jeglichen Cross-Site-Scripting-Angriff, da die eingeschleusten Nutzdaten in der Ausgabe codiert werden und keinerlei Skripte in den Nutzdaten ausgeführt werden.
-
Wenn zum Beispiel der Parameterwert „<script>hijack()</script>” übergeben wird, ersetzt die Codiereinheit 328 des Proxy 312 jedes Auftreten dieses Wertes durch „<script>hijack()</script>”. Die Lösung ist zweckdienlich, es bestehen jedoch Einschränkungen. Diese Codierung ist zwar für das erste, oben beschriebene Szenario passend, für die Verwendung an der zweiten reflektierten Position ist die Codierung jedoch nicht korrekt. Um das zweite Auftreten der Eingabe zu bereinigen, muss ein anderes Codierungsverfahren verwendet werden, zum Beispiel eine Zeichenfolgencodierung, bei der die doppelten Anführungszeichen mithilfe eines vorausgehenden umgekehrten Schrägstrichs codiert werden. Wie oben erwähnt, muss der Proxy 308 des Weiteren Kenntnis von dem Kontext haben, in dem die Eingabe zurückgemeldet wird, um eine geeignete, zu verwendende Codierung zu identifizieren.
-
Mithilfe einer Web-Anwendungsüberprüfungseinheit wie zum Beispiel einer Überprüfungseinheit 322 werden die Eingabe, die in der überprüften Anwendung reflektiert wird, und der Kontext, in dem das Reflektieren erfolgt, identifiziert. Die Überprüfungseinheit 322 sendet einen Testwert an jedes in der überwachten Eingabe 310 gefundene Eingabefeld, um zu ermitteln, ob der Wert zurückmeldet wurde. Für jede Instanz eines Wertes, der in der Ausgabe 326 zurückgemeldet wird, werden eine Position und ein Kontext identifiziert. Da die Überprüfungseinheit 322 den eingeschleusten Wert steuert, verwendet die Überprüfungseinheit 322 einen Wert, der eindeutig genug ist, um in der zurückgegebenen Ausgabe leicht identifiziert zu werden. Die Überprüfungseinheit 322 kann außerdem Fälle unterstützen, in denen dieselbe Eingabe mehrmals und an verschiedenen Positionen und in verschiedenen Kontexten innerhalb derselben Ausgabe zurückgemeldet wird. Die Ausgabe der Überprüfungseinheit 322 erzeugt eine Liste der Vorkommen, die zur Wiederverwendung gespeichert werden können, bei einer Ausführungsform zum Beispiel in Form einer Konfigurationsdatei 324 in der erweiterbaren Auszeichnungssprache (extensible markup language, XML).
-
Die Codiereinheit 328 codiert programmgesteuert eine Eingabe, die in der Ausgabe 326 reflektiert wird, um die codierte Ausgabe 330 zu erstellen. Die Überprüfungseinheit 322 identifiziert programmgesteuert die geeignete Position und Codierung für jede Instanz der Eingabe, die in der Ausgabe reflektiert wird.
-
Die offenbarte Ausführungsform wird im Zusammenhang mit Cross-Site-Scripting dargestellt; die beschriebene Technik ist auf alle Arten von Einschleusungsangriffen anwendbar. Wenn ein Proxy zum Beispiel in der Lage ist, die gesamte SQL-Aktivität zu überwachen, und feststellt, dass eine Eingabe, zum Beispiel ein Hypertext-Transportprotokoll-Parameterwert unverändert in einem Structured-Query-Language(SQL)-Befehl eingebettet ist, kann der Proxy programmgesteuert den Wert an diesem identifizierten Punkt codieren. Ähnlich wie bei dem Beispiel des Cross-Site-Scripting hängt in diesem Beispiel der genaue zu codierende Bereich und der zu verwendende Codierungstyp von dem Kontext ab, in dem die Benutzerdaten in den Structured-Query-Language-Befehl eingebettet werden, was bedeutet, dass für den Proxy 312 zur Unterstützung die korrekten Daten konfiguriert sein müssten. Um dies zu lösen, schleust die Überprüfungseinheit 322 eine eindeutige Eingabe ein und identifiziert, wo, wenn überhaupt, die Eingabe in den SQL-Befehl eingeschleust wird.
-
Cross-Site-Scripting ist tatsächlich ein Beispiel für einen Einschleusungsangriff in Hypertext-Auszeichnungssprache, bei dem der Angreifer durch den Angreifer bereitgestellte Skripte in die Ausgabe einschleust. Die Eingabe wird gewissermaßen in den Hypertext-Auszeichnungssprachenbefehl eingeschleust.
-
Die Beispiele offenbaren zwar eine Überwachung für und eine Codierung der gesamten Eingabe, die eingegeben wird, die veranschaulichenden Ausführungsformen gelten jedoch gleichermaßen für Teile der Eingabe, zum Beispiel, wenn die ersten zehn Zeichen der Eingabe zurückgemeldet werden. Zum Zweck der Offenbarung wird die gesamte Eingabe verwaltet, die Ausführungsformen beinhalten jedoch ebenso das Verwalten von Teilen der Eingabe.
-
Unter Bezugnahme auf
4 wird ein Ablaufplan eines Prozesses unter Verwendung des Systems zum Entschärfen von Einschleusungsangriffen von
3 gemäß einer Ausführungsform der Offenbarung dargestellt. Ein Prozess
400 ist ein Beispiel für einen Prozess unter Verwendung des Systems zum Entschärfen von Einschleusungsangriffen
300 von
3. In der Beschreibung der Ausführungsform wird folgendes Beispiel verwendet:
-
Ein Prozess 400 beginnt (Schritt 402) und überwacht sämtlichen eingehenden Datenverkehr und ausgehenden Datenverkehr (Schritt 404). Eingehender Datenverkehr wird durch einen Browser erzeugt und fließt durch einen Proxy zu einer Web-Anwendung auf dem Anwendungs-Server. Ausgehender Datenverkehr entsteht auf dem Server und verläuft durch den Proxy zu dem Client auf dem Browser.
-
Der Prozess 400 ermittelt, ob ein eindeutiges Element, das in einer Konfigurationsdatei definiert ist, mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt (Schritt 406). Das eindeutige Element wurde als Ergebnis einer Überprüfung einer Web-Anwendung mithilfe einer Überprüfungseinheit wie zum Beispiel der Überprüfungseinheit 322 von 3 erstellt und gespeichert. Wenn ermittelt wird, dass das in einer Konfigurationsdatei definierte eindeutige Element mit einem Eingabewert des gespeicherten, überwachten Datenverkehrs übereinstimmt, wird ein Ergebnis „ja” zurückgegeben. Wenn ermittelt wird, dass das in einer Konfigurationsdatei definierte eindeutige Element nicht mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, wird ein Ergebnis „nein” zurückgegeben.
-
Wenn in Schritt 406 ein „nein”-Ergebnis bezogen wird, führt der Prozess 400 eine Schleife zurück durch, um den Schritt 404 durchzuführen. Wenn in Schritt 406 ein „ja” bezogen wird, speichert der Prozess 400 einen übereinstimmenden Eingabewert (Schritt 408). Der Prozess 400 ermittelt, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält (Schritt 410). Wenn ermittelt wird, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, wird ein „ja”-Ergebnis bezogen. Wenn ermittelt wird, dass die Ausgabe den übereinstimmenden Eingabewert nicht an einer erwarteten Position enthält, wird ein „nein”-Ergebnis bezogen.
-
Wenn in Schritt 410 ein „ja”-Ergebnis bezogen wird, codiert der Prozess 400 den übereinstimmenden Eingabewert mithilfe einer jeweiligen Definition in der Konfigurationsdatei (Schritt 412). Der übereinstimmende Eingabewert wird mithilfe der Daten codiert, die in der Konfigurationsdatei enthalten sind, zum Beispiel der Positions- und Kontextdaten. Es wird daher eine geeignete Codierung verwendet, um den übereinstimmenden Eingabewert zu codieren, der in der Ausgabe enthalten ist. Der Prozess 400 gibt die Ausgabe an den Anforderer zurück (Schritt 414) und endet anschließend (Schritt 416).
-
Wenn in Schritt 410 ein „nein”-Ergebnis bezogen wird, codiert der Prozess 400 den übereinstimmenden Eingabewert mithilfe einer Standarddefinition (Schritt 418) und endet anschließend (Schritt 416). Die Standarddefinition wird verwendet, da der übereinstimmende Eingabewert an einer anderen Position als der Position identifiziert wurde, der in einem Eintrag der Konfigurationsdatei ausgewiesen wurde. Wenngleich die Position unterschiedlich war, stimmte der Eingabewert überein und wurde entsprechend zum Schutz codiert.
-
Der Proxy verstärkt auf diese Weise den Schutz mithilfe des soeben beschriebenen Prozesses. Der Proxy empfängt die Konfigurationsdatei in der erweiterbaren Auszeichnungssprache oder greift auf sie zu und überwacht sämtlichen eingehenden und ausgehenden Datenverkehr. Immer, wenn er auf eine in der Konfigurationsdatei genannte Eingabe stößt, speichert der Proxy den Wert der Eingabe. Wenn eine Ausgabe gebildet wird, ermittelt der Proxy, ob der Eingabewert an der/den erwarteten Position oder Positionen auftritt, und wenn dies der Fall ist, codiert er den Eingabewert auf der Grundlage des/der konfigurierten Kontextes oder Kontexte für jeden Eingabewert.
-
Wenn zum Beispiel der Parameter „name” einen Wert <script>hijack(”this”)</script> aufweist, wird dieser Wert so modifiziert, dass er beim ersten Auftreten in der Ausgabe zu <script>hijack("this")</script> wird und beim zweiten Auftreten in der Ausgabe zu <script>hijack(\”this\”)</script> wird.
-
Befehle dazu, welcher Eingabewert codiert werden soll, könnten erheblich komplexer werden und den Kontext, der beschreibt, welche zusätzlichen Parameter oder Cookies in der Anforderung auftreten, eine Eingabe, die Teil eines Pfades ist, eine Eingabe, die auf eine andere Eingabe folgt, und sonstige typische Vorkommen beinhalten. Die Beschreibung einer Position in der Ausgabe kann auf viele verschiedene Arten erfolgen. Das Verfahren einer Positionsbeschreibung kann variieren.
-
Bei einer Ausführungsform kann zum Beispiel ein XPath-Ausdruck verwendet werden. Unter Verwendung dieses Beispiels kann eine Überprüfungseinheit die Hypertext-Auszeichnungssprache in erweiterbare Hypertext-Auszeichnungssprache (extensible hypertext markup language, XHTML) normalisieren und anschließend einen XML-Path-, einen XPath-Ausdruck verwenden, um die Position der zurückgegebenen Nutzdaten zu beschreiben. Unter Verwendung des obigen, vorherigen Beispiels würden die beiden Positionen mithilfe einer XPath-Schreibweise wie folgt codiert:
/html/body/H1/b/text()
/html/body/img/@alt/string(). Dieses Beispiel würde lediglich in XPath 2.0
funktionieren.
-
Bei einer weiteren Ausführungsform werden reguläre Ausdrücke verwendet, um die Position in der Ausgabe zu beschreiben. Bei diesem Ansatz, wie auch bei dem XPath-Ansatz, werden üblicherweise weniger wichtige Teile der Ausgabe, die sich wahrscheinlich ändern werden, ignoriert, da die Seiten nicht sehr statisch sind. Eine verwendete Technik erwartet, dass die Struktur der Hypertext-Auszeichnungssprache der Ausgabe gleich bleibt, ignoriert jedoch den Kontext selbst.
-
Beispielsweise können in dem vorherigen Beispiel, unter der Annahme der Verwendung von $1 zur Beschreibung der zurückgemeldeten Ausgabe die folgenden regulären Ausdrücke verwendet werden:
-
Um Fälle zu lösen, in denen die Beschreibung zu spezifisch war und der Eingabewert an einem anderen Punkt zurückgemeldet wurde, wird der Proxy in die Lage versetzt, eine Ausweichstandardcodierung umzusetzen. Die Standardcodierung weist eine höhere Wahrscheinlichkeit auf, die Anwendung zu unterbrechen, erhöht jedoch die Sicherheit, wenn sie angewendet wird. Der Proxy ist zum Beispiel so eingerichtet, dass er die Hypertext-Auszeichnungssprache verwendet, um jegliches Auftreten von Nutzdaten in der Ausgabe zu codieren, wenn diese Nutzdaten von einer Eingabe, von der bekannt ist, dass sie Daten zurückmeldet, und daher von der ursprünglichen Konfiguration stammen und länger als acht Zeichen sind.
-
Unter Bezugnahme auf 5 wird ein Ablaufplan eines Konfigurationsdatei-Erstellungsprozesses, der mit dem Prozess von 4 verwendet wird, gemäß einer Ausführungsform der Offenbarung dargestellt. Bei dem Prozess 500 handelt es sich um einen Konfigurationsprozess, der zum Erstellen einer Konfigurationsdatei wie zum Beispiel der XML-Konfigurationsdatei 324 von 3 verwendet wird, die identifizierte Eingabewerte wie zum Beispiel Positions- und Kontextdaten enthält, die mit dem Prozess 400 von 4 verwendet werden.
-
Die Beschreibung der Ausführungsform verwendet das folgende Beispiel: Anforderung: http://server/welcome.jsp?name=John Antwort:
-
Bei einer Ausführungsform erkennt eine Überprüfungseinheit wie zum Beispiel die Überprüfungseinheit 322 von 3 sämtliche Positionen, an denen eine Benutzereingabe in einer Ausgabe zurückgemeldet wird. Um die Positionen zu identifizieren, würde die Überprüfungseinheit eine Site, die eine Web-Anwendung enthält, automatisch durchsuchen und dabei alle Seiten und Eingaben einer Web-Anwendung entdecken, die Cookies, Formularfelder und Pfade beinhalten. Für jede solche Eingabe modifiziere den Eingabewert in einen eindeutigen Wert wie zum Beispiel „AppScan_Value”, sende die Eingabe erneut und ermittle, ob dieser Wert in der Ausgabe zurückgemeldet wird. Wenn der Wert in der Ausgabe zurückgemeldet wird, bemerkt die Überprüfungseinheit die Eingabe, die geändert wurde, zum Beispiel den universellen Ortsangeber für Ressourcen (universal resource locator, URL), den Parameternamen, die Position(en) und den/die Kontext(e) in der Ausgabe, die die zurückgemeldete Eingabe enthält. Nach Abschluss der Überprüfung exportiert die Überprüfungseinheit eine Liste dieser Positionen, beispielsweise in einem erweiterbaren Auszeichnungssprachenformat.
-
Überprüfungseinheiten für die Sicherheit von Web-Anwendungen, die zurzeit erhältlich sind, führen bereits ein automatisches Durchsuchen, Modifizieren von Werten und Erstellen von Konfigurationen für zahlreiche vorhandene Tests durch, wodurch der Aufwand verringert wird, der zum Hinzufügen dieser zusätzlichen Nutzdaten erforderlich ist. Eine erste Umsetzung befasst sich möglicherweise lediglich mit Eingaben, die tatsächlich anfällig für Cross-Site-Scripting-Angriffe sind, und überspringt einfach zurückgemeldete Eingaben, die als nicht anfällig für Cross-Site-Scripting-Angriffe gehalten wurden, vermutlich weil typische Codelösungen verfügbar waren.
-
In dem obigen Beispiel gibt die Überprüfungseinheit in einer veranschaulichenden Ausführungsform an, dass der Parameter „name” an dem universellen Ortsangeber für Ressourcen „http://server/welcome.jsp” in der Ausgabe zweimal zurückgemeldet wird und jeweils die Position und den Kontext beschreibt.
-
Der Prozess 500 beginnt (Schritt 502) und identifiziert eine Seite einer Web-Anwendung und zugehörige Eingaben der Seite, um einen Satz von identifizierten Eingaben zu bilden (Schritt 504). Positionsdaten und Kontextdaten, die der Position zugehörig sind, werden erfasst. Für jede Eingabe in dem Satz von identifizierten Eingaben wandelt der Prozess 500 die Eingabe in eine Form eines eindeutigen Elements um (Schritt 506). Der Prozess 500 bildet ein eindeutiges Element, um den Eingabewert als potenziellen Wert eines Einschleusungsangriffs zu identifizieren.
-
Der Prozess 500 sendet eine Eingabe erneut unter Verwendung des eindeutigen Elements (Schritts 508). Das eindeutige Element stellt den überprüften Eingabewert dar. Der Prozess 500 ermittelt, ob das eindeutige Element in einer Ausgabe zurückgemeldet wird (Schritt 510). Wenn ermittelt wird, dass das eindeutige Element in der Ausgabe zurückgemeldet wird, wird ein Ergebnis „ja” bezogen. Wenn ermittelt wird, dass das eindeutige Element nicht in der Ausgabe zurückgemeldet wird, wird ein Ergebnis „nein” bezogen. Wenn in Schritt 510 ein „nein”-Ergebnis bezogen wird, springt der Prozess 500 zu Schritt 514 vor.
-
Wenn in Schritt 510 ein „ja”-Ergebnis bezogen wird, identifiziert der Prozess 500 eine Position und einen Kontext in der Ausgabe, die die zurückgemeldete Eingabe des eindeutigen Elements enthält (Schritt 512). Der Prozess 500 ermittelt, ob weitere Seiten zu verarbeiten sind (Schritt 514). Wenn ermittelt wird, dass weitere Seiten zu verarbeiten sind, wird ein Ergebnis „ja” bezogen. Wenn ermittelt wird, dass keine weiteren Seiten zu verarbeiten sind, wird ein Ergebnis „nein” bezogen. Wenn in Schritt 514 ein „ja”-Ergebnis bezogen wird, führt der Prozess 500 eine Schleife zurück zu Schritt 504 durch, um die verbleibenden Seiten zu verarbeiten.
-
Wenn in Schritt 514 ein „nein”-Ergebnis bezogen wird, exportiert der Prozess 500 ein Überprüfungsergebnis in eine Konfigurationsdatei, die eine Liste von identifizierten Positionen enthält, (Schritt 516), und der Prozess 500 endet anschließend (Schritt 518). Jeder identifizierte Eingabewert mit zugehörigen Positions- und Kontextdaten wird als Eintrag in der resultierenden Konfigurationsdatei platziert, die durch die Codiereinheit wie zum Beispiel die Codiereinheit 328 von 3 verwendet wird.
-
Auf diese Weise wird bei einer Ausführungsform ein computerimplementierter Prozess zum Entschärfen von Einschleusungsangriffen bereitgestellt, der sämtlichen eingehenden und ausgehenden Datenverkehr überwacht, um einen überwachten Datenverkehr zu bilden, ermittelt, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden, und in Reaktion auf eine Ermittlung, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, den übereinstimmenden Eingabewert speichert. Der computerimplementierte Prozess ermittelt des Weiteren, ob eine zurückgegebene Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, und codiert in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, den übereinstimmenden Eingabewert mithilfe einer jeweiligen Definition aus einer Konfigurationsdatei und gibt die Ausgabe an den Anforderer zurück.
-
Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Arbeitsweise möglicher Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Abschnitt eines Codes darstellen, der einen oder mehrere ausführbare Befehle zum Umsetzen einer angegebenen logischen Funktion umfasst. Es ist außerdem zu beachten, dass bei einigen alternativen Umsetzungen die in dem Block vermerkten Funktionen in einer anderen Reihenfolge als in den Figuren vermerkt auftreten können. Beispielsweise können je nach einbezogener Funktionalität zwei nacheinander dargestellte Blöcke sogar im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können bisweilen in der umgekehrten Reihenfolge ausgeführt werden. Es ist ferner zu beachten, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne und Kombinationen von Blöcken in den Blockschaubildern und/oder in den Ablaufplänen durch Spezialsysteme auf der Grundlage von Hardware, die die angegebenen Funktionen oder Vorgänge ausführen, oder durch Kombinationen von Spezial-Hardware und Computerbefehlen umgesetzt werden können.
-
Die entsprechenden Strukturen, Materialien, Vorgänge und Entsprechungen aller Mittel bzw. Schritte sowie die Funktionselemente in den nachstehenden Ansprüchen sollen jede Struktur, jedes Material bzw. jeden Vorgang zum Durchführen der Funktion in Kombination mit sonstigen beanspruchten Elementen als ausdrücklich beansprucht beinhalten. Die Beschreibung der vorliegenden Erfindung erfolgte zum Zweck der Veranschaulichung und Beschreibung, ist jedoch nicht erschöpfend bzw. auf die Erfindung in der dargestellten Form beschränkt gemeint. Viele Modifizierungen und Varianten sind für Fachleute ersichtlich, ohne vom Umfang und Gedanken der Erfindung abzuweichen. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung am besten zu erläutern und um anderen Fachleuten das Verständnis der Erfindung für verschiedene Ausführungsformen mit verschiedenen, für den in Betracht gezogenen Einsatz geeigneten Modifizierungen zu ermöglichen.
-
Die Erfindung kann eine reine Hardware-Ausführungsform, eine reine Software-Ausführungsform bzw. eine Ausführungsform annehmen, die sowohl Hardware- als auch Software-Elemente enthält. Bei einer bevorzugten Ausführungsform wird die Erfindung in Software umgesetzt, was Firmware, residente Software, Mikrocode und sonstige Software-Medien beinhaltet, die von einem Fachmann zu erkennen sind, jedoch nicht darauf beschränkt ist.
-
Es muss darauf hingewiesen werden, dass die vorliegende Erfindung zwar im Zusammenhang eines voll funktionsfähigen Datenverarbeitungssystems beschrieben worden ist, Fachleuten jedoch ersichtlich ist, dass die Prozesse der vorliegenden Erfindung in Form eines computerlesbaren Befehlsmediums und in einer Vielfalt von Formen vertrieben werden können und dass die vorliegende Erfindung unabhängig von dem jeweiligen Typ der signaltragenden Medien, die für die eigentliche Verteilung verwendet werden, gleichermaßen gültig ist. Zu Beispielen für computerlesbare Medien zählen beschreibbare Medien wie zum Beispiel eine Diskette, ein Festplattenlaufwerk, ein RAM, CD-ROMs, DVD-ROMs und Übertragungsmedien wie zum Beispiel digitale und analoge Datenaustauschverbindungen, drahtgebundene oder drahtlose Datenaustauschverbindungen, die Übertragungsformen wie zum Beispiel Funkübertragung und Lichtwellenübertragung verwenden. Die computerlesbaren Medien können die Form von codierten Formaten annehmen, die für die jeweilige Verwendung in einem bestimmten Datenverarbeitungssystem decodiert werden.
-
Ein Datenverarbeitungssystem, das zum Speichern und/oder Ausführen von Programmcode geeignet ist, beinhaltet zumindest einen Prozessor, der direkt bzw. indirekt durch einen Systembus mit Speicherelementen verbunden ist. Zu den Speicherelementen können ein lokaler Speicher, der während der tatsächlichen Ausführung des Programmcodes eingesetzt wird, ein Massenspeicher und Cachespeicher gehören, die eine vorübergehende Speicherung von zumindest einem Teil des Programmcodes bereitstellen, um die Häufigkeit zu verringern, mit der der Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
-
Eingabe/Ausgabe- bzw. E/A-Einheiten (zum Beispiel Tastaturen, Anzeigen, Zeigeeinheiten usw., jedoch nicht auf diese beschränkt) können entweder direkt oder durch eingreifende E/A-Steuereinheiten mit dem System verbunden sein.
-
Netzwerkadapter können ebenfalls mit dem System verbunden sein, um dem Datenverarbeitungssystem zu ermöglichen, durch eingreifende private oder öffentliche Netzwerke mit anderen Datenverarbeitungssystemen oder entfernt angeordneten Druckern oder Speichereinheiten verbunden zu werden. Modems, Kabelmodems und Ethernet-Karten sind nur einige der gegenwärtig verfügbaren Arten von Netzwerkadaptern.
-
Die Beschreibung der vorliegenden Erfindung erfolgte zum Zweck der Veranschaulichung und Beschreibung, ist jedoch nicht erschöpfend bzw. auf die Erfindung in der dargestellten Form beschränkt gemeint. Zahlreiche Modifizierungen und Varianten sind für den Fachmann ersichtlich. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung am besten zu erläutern und um anderen Fachleuten das Verständnis der Erfindung für verschiedene Ausführungsformen mit verschiedenen, für den in Betracht gezogenen Einsatz geeigneten Modifizierungen zu ermöglichen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- US 2008/0263650 [0017]
- US 2007/0113282 [0018]
- US 2004/0260754 [0019]