08Jan

Um Webdienste vor Missbrauch durch Webbots zu schutz werden CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) eingesetzt. Eine javabasierte Lösung, die einfach zu integrieren und implementieren ist, bietet das Framework jCaptcha an (http://jcaptcha.sourceforge.net). Es steht unter LGPL und bietet eine Reihe vordefinierter Captchaimages an. Im folgenden möchte ich beispielhaft erläutern, welche Schritte nötig sind, um eine Captchalösung mithilfe des jCapchta-Frameworks in eine bestehende J2EE Anwendung einzubinden.

japchta1-1

  1. Ein Nutzer fordert im Browser eine Seite an, die durch ein Captcha geschützt werden soll.

  2. Das Template enthält das Captcha-Image und ein Textfeld für die Lösung. Als Source für das Image wird “/jcaptcha„ angegeben.

    japtcha2-1

  3. Die Singleton Captchaservice-Klasse wird aus dem Template heraus aufgerufen. Weil Pattern „/jcaptcha“ aus Template auf die CaptchaService Klasse mapped. Das Mapping muss in der web.xml definiert werden.

    jacptcha3

  4. Beispiel einer einfachen CaptchaService implementation:

    jacptcha4-2

  5. Das generierte Captchaimage in den Response legen und an Template senden. Der Contenttype des Responses muss “jpeg” sein. Beispiel:

    jacptcha5

  6. Zum Schluss muss noch die Klasse zur Überprüfung des Ergebnisses implmentieren werden. Bsp:jcaptcha6

Technorati Tags: , ,

03Jul

Um in einer Webanwendung sicherzustellen, dass die Nutzer keinen Viren oder andere Schädlinge durch Uploads einschleusen, gibt es verschieden Möglichkeiten. Eine Möglichkeit ist es, in der Webanwendung selbst eine Virenüberprüfung anzustossen. Eine Alternative ist es, die Virenprüfung in einem vorgeschaltenem Apache vorzunehmen.

Diese Funktionalität kann mit dem Modul ModSecurity für den Apache erreicht werden. Dieses erkennt bei einem Request des Clients mitgesendete Dateien. Durch bestimmte Filterregeln kann ModSecurity so konfiguiert werden, dass ein Script auf dem Server aufgerufen wird:

SecRule FILES_TMPNAMES "@inspectFile /usr/local/share/clamav/modsecurity-clamav.pl" t:none,redirect:'%{REQUEST_FILENAME}?error=virus'

Diese Regel bewirkt, dass jede mitgesendete Datei auf der Festplatte zwischengespeichert wird, und das Script ausgeführt wird. Das Script selbst wiederrum ruft den Virenscanner auf, und parst das Ergebnis. Je nach dem ob ein Virus erkannt wird, wird ‘0′ oder ‘1′ zurückgegeben. Wenn kein Virus gefunden wurde, wird der Request wie gewohnt fortgesetzt. Im Fehlerfall wird eine definierte Aktion ausgeführt, wie z. B. die Weiterleitung zu einer Fehlerseite, die dem Nutzer eine Fehlermeldung ausgibt. In dem Beispiel wird ein Redirect mit der Request URL und einem Parameter error=virus zum Client gesendet.

Als Virenscanner empfiehlt sich der OpenSource Virenscanner ClamAV der für verschiedenste Systeme zur Verfügung steht. Das bereits oben beschrieben Script modsecurity-clamav.pl übernimmt den Aufruf und das Parsen des Scanneoutputs. Ein Beispiel Script findet sich hier.

Wenn noch keine Apache vorhanden ist, muss dieser als Reverse Proxy konfiguriert werden. Anfragen an den Apache müssen dabei an die eigentliche Webanwendung weitergeleitet werden. Zusätzlich muss ein URL Rewriting der Webanwendungsresponse stattfinden. Dies ist z. B. hier beschrieben.