Erstellen eines HTTP Test Tools
Geschrieben von: Christoph Wille Das Testen einer Website mit verschiedenen Browsern gehört zum Alltag eines Webentwicklers - zumindest dann, wenn man nicht an einem Intranetprojekt arbeitet, wo der Browser Firmenpolitik ist. Mit Browsertests kann man sowohl Layoutprobleme, als auch Client-side Scriptprobleme erkennen und ausmerzen. Allerdings ist damit nicht gewährleistet, daß man alle Details der Verbindung Web Server und Client manipulieren kann, was für Sicherheits- und Stabilitätstests wichtig sein kann. Auf welche Details will ich hinaus? Zum Beispiel schickt der Browser automatisch seine Kennung, für Internet Explorer auf Windows 2000 wäre das zB: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Netscape Navigator schickt eine ähnliche Kennung, allerdings ohne den String compatible. Wenn man nicht gerade eine Komponente zur Erkennung der Browserfähigkeiten verwendet, dann parst man den String selbst auf - und macht gelegentlich Fehler, so zum Beispiel indem man Punktversionen nicht berücksichtigt, oder nachfolgende Versionen ignoriert: If Mid(strBrowser,31,1) = 5 ThenDieser Code würde nur für Internet Explorer Version 5.x funktionieren, bei einem Wechsel auf 6 oder mehr, müßte man die Webseiten umprogrammieren. Und es soll vorgekommen sein, daß solche Fehler überhaupt lange Zeit übersehen wurden... Weitere Ansatzpunkte zum Testen außerhalb eines Browsers: leichteres Austesten von GET und POST, die Möglichkeit die Header direkt einsehen zu können (für cache-control, Cookie, etc), Content Types manipulieren zu können, uvm. Im weiteren Verlauf des Artikels stelle ich nun vor, wie man sich eine interaktive Testapplikation erstellen kann. Diese kann nach Belieben an die Bedürfnisse angepasst werden, oder sogar in ein automatisiertes Test-Tool für Websites umgebaut werden. ProgrammierungFür die Programmierung habe ich 2 Tools verwendet: Visual Basic 6.0 (ASP Programmierer haben den Vorteil, nicht sehr viel dazulernen zu müssen), sowie die AspTear 1.2 Komponente von AlphaSierraPapa. Mit VB programmiere ich das Front End, und AspTear dient mir dazu, mich mit dem Webserver zu unterhalten - sprich die Seiten mit den entsprechenden Details abzufragen:
Das Programm W3Test ist als Standard EXE programmiert (Sourcecode und Executable im Download enthalten). Das fertige User Interface sieht in der Visual Basic Entwicklungsumgebung wie folgt aus: Um nun den Code für die AspTear Komponente einzufügen, muß nur noch die Typbibliothek referenziert werden. Dies geschieht über den Befehl References im Project Menü. Mit dem Befehl Browse sucht man dann asptear.tlb und bindet sie in das Projekt ein: Nun kann man den Code programmieren, um eine Seite vom Webserver abzuholen: Private Sub cmdGo_Click() On Error GoTo Err_CmdGo Dim strURL As String, nPort As Integer, strRetVal As String Dim nAction As Integer ' I simply get the text here, you can add whatever check you want strURL = Me.txtURL.Text ' get the port - simple check if it is numeric nPort = 80 If IsNumeric(Me.txtPort) Then nPort = Me.txtPort Else MsgBox "The port number you entered is non-numeric." Exit Sub End If Dim tearObj As New ASPtear.ASPtear tearObj.ContentType = Me.txtContentType tearObj.FollowRedirects = Me.chkFollowRedirects.Value tearObj.HttpVersion = Me.cbProtocol.Text tearObj.Port = nPort tearObj.UserAgent = Me.txtUserAgent If Me.radioGET.Value = True Then nAction = ACTION_GET Else nAction = ACTION_POST End If strRetVal = tearObj.Retrieve(strURL, nAction, Me.txtData, "", "") Me.txtResponse = Replace(strRetVal, vbLf, vbCrLf) Me.txtHeader = tearObj.Headers MsgBox "Retrieval finished!" Exit Sub Err_CmdGo: MsgBox Err.Description & vbCrLf & "Error number: " & Err.Number Exit Sub End Sub Ich habe mich mit der Überprüfung der Benutzereingaben sehr zurückgehalten, um den Sourcecode kurz zu halten - und auch scheinbar sinnlose Anfragen zuzulassen, wie zum Beispiel ein leerer User Agent String (damit kann man sehr viel Browser-Checking Code zu Fall bringen...). VerwendungDie Verwendung des Tools ist sehr einfach, und als Beispiel soll die Anfrageseite für Autoren bei AspHeute dienen: http://www.aspheute.com/Service/contactauthor.asp? author=Christoph+Wille& AuthorEmail=christophw@alphasierrapapa.com& artikel=20000502Wenn man diese URL in der Adresszeile des Browsers eingibt, landet man bei der Kontaktseite für den Artikel Monitoring von ASP. Um nun diese URL von der W3Test Applikation aus aufzurufen, muß man folgende Einstellungen eingeben (Resultat ebenfalls bereits in diesem Screenshot angezeigt): Jetzt kann man daran gehen, POST statt GET zu verwenden, den User Agent auszuprobieren, einige Parameter des Query Strings zu verändern - um den Code der Seite auf Schwächen abzuklopfen. Darauf hinweisen möchte ich, daß für GET als auch POST das Format für die Parameterübergabe gleich ist, also als Query String. Binäres POSTen (Dateiupload) ist nicht möglich. Das W3Test Programm ist in der Lage Response.Redirect Anweisungen zu folgen, und zwar dann, wenn die Checkbox Follow Redirects angekreuzt ist; sonst bekommt man eine Fehlermeldung, daß der Server einen Redirect verlangt hat. SchlußbemerkungDas hier vorgestellte W3Test Programm schöpft nicht die gesamte Palette der Funktionalität der AspTear Komponente aus. Diese kann auch noch Benutzervalidierung, SSL Client Zertifikate, sowie das Faken des Referers (von welcher Seite der Benutzer zu dieser Seite gekommen ist). Eine weitere Anwendungsmöglichkeit für die AspTear Komponente ist ein Skript, das jeden Tag die eigene Website besucht, und die Hauptseite mit einem Template vergleicht - um zu sehen, ob sich ein Hacker daran vergangen haben sollte. Natürlich kann die Komponente auch am Server selbst eingesetzt werden, um zum Beispiel Kreditkarten zu überprüfen. Download des CodesKlicken Sie hier, um den Download zu starten. Verwandte Artikel
ASP-basierte Basic Authentication Links zu anderen Sites
AspTear Wenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |