Komponente CaptchaCom für Windows (NT 4, 2K, XP und 2003 Server)
Wer eine eigene Website mit einem Emailformular hat, um
Websitebesuchern die Möglichkeit zu bieten, eine Nachricht abzusetzen, kennt das Problem. Ein Emailformular wird meist dazu
missbraucht, unerwünschte Emails mit Werbung zu versenden.
Für diesen Zweck werden größtenteils Automaten (HTML-Scanner) genutzt,
die HTML-Formulare im Internet suchen und finden, sämtliche
HTML-Formularfelder mit Text füllen und die ausgefüllten Formulardaten absenden, um
damit Emails mit beliebigen Werbemüll zu versenden.
Die Lösung des Problems heißt ISSB CaptchaCom.
CAPTCHA ist die Abkürzung für Completely Automated Public Turing test to tell Computers and Humans Apart (siehe Wikipedia).
Die erzwungene Eingabe einer Zeichenfolge, die durch einen Menschen abgelesen, erkannt und in ein
HTML-Formularfeld übertragen werden muss, trägt entscheidend dazu bei, den
Missbrauch von HTML-Formularen zu mindern
Den Kern des Problems löst hierbei die Erkennung der Zeichenfolge durch den
Menschen. Er hat die Aufgabe, die Zeichenfolge zu deuten und unterscheidet
sich somit von einem Automaten, dem es heutzutage noch schwer fällt, eine
Zeichenfolge aus einem Bild zu lesen, das zusätzliche Störungen
enthält.
ISSB CaptchaCom generiert eine zufällige Zeichenfolge (auch
security-Code) beliebig einstellbarer Länge, gibt die einzelnen
Zeichen in unregelmäßig aufeinander folgenden Positionen, wechselnden
Farben, Transparenz und mit Schrift-Umrandungen sowie Schatten aus.
Selbst für einen Menschen ist es manchmal schwierig, die Zeichenfolge
richtig zu erkennen. In so einem Fall ist es günstig, eine neue
Zeichenfolge zu generieren. Sie wird je nach Einstellung wesentlich
anders dargestellt als Vorherige (siehe Emailformular -> Neuer Code).
ISSB CaptchaCom wird am Webserver mit regsvr32 registriert, um in ASP-Webseiten verfügbar zu sein (siehe Installation).
Auch auf Client-PCs ist CaptchaCom nach der Registrierung verfügbar, um die Komponente in VB- oder C++ Anwendungen zu integrieren.
Beschreibung der Komponente:
Abhängigkeiten
CaptchaCom lädt einige Windows-Dlls, die normalerweise zum Windows-System gehören und bereits installiert sind, wie z. B. die MSVCRT.DLL.
Unter Umständen ist jedoch auf Windows 2000, Windows Millennium, Windows NT 4 oder Windows 98 die GDIPlus.dll nicht auf dem System installiert.
Für diesen Fall bietet Microsoft ein Download an, um gdiplus.dll zu
installieren. Die DLL wird einfach in das gleiche Verzeichnis kopiert, wo
sich auch die CaptchaCom.dll befindet (GDIPlus auf ISSB-Server).
Ab Windows XP ist GDI-Plus im System integriert.
Installation
- Komponente laden... (Bitte nur laden und installieren, wenn Sie die Nutzungsbedingungen gelesen haben.)
-
Komponente auspacken und die Datei CaptchaCom.dll in ein beliebiges lokales Verzeichnis kopieren (empfohlen wird c:\programme\gemeinsame Dateien\ISSB)...
-
regsvr32 [Komponenten-Dir]\CaptchaCom.dll ausführen...
Komponenten-dir ist das Verzeichnis, in der sich die DLL befindet, z. B. c:\programme\gemeinsame Dateien\ISSB.
Enthält das Verzeichnis Leerzeichen, muss der Parameter in Hochkommata eingeschlossen werden.
Bsp: regsvr32 "c:\programme\gemeinsame Dateien\ISSB\CaptchaCom.dll"
Deinstallation
Um die Komponente zu deinstallieren, muss die Komponente aus der Registrierung entfernt werden.
Der Befehl regsvr32 [Komponenten-Dir]\CaptchaCom.dll /u erledigt dies.
Komponenten-Dir ist das Verzeichnis, in der sich die DLL befindet, z. B. c:\programme\gemeinsame Dateien\ISSB.
Enthält das Verzeichnis Leerzeichen, muss der Parameter in Hochkommata eingeschlossen werden.
Bsp: regsvr32 "c:\programme\gemeinsame Dateien\ISSB\CaptchaCom.dll" /u
Wurde die Komponente auf einem Webserver (MS IIS) installiert und in ASP-Webseiten integriert, muss der Webserver beendet werden.
Der Webserver kann durch den Dienste-Manager mit IIS-Admindienst beenden beendet werden.
Nach Entfernung der Registrierung kann die Komponente aus dem Verzeichnis gelöscht werden.
Methoden
- CreateNewSecCodeStr (Len)
Generiert eine neue Zufallszeichenfolge für den security-Code mit angegebener Länge. Die Voreinstellung
beträgt 4 Zeichen. Die generierte Zeichenfolge ist in Eigenschaft SecCodeStr enthalten.
- CreateNewSecCodeImg (Width, Height)
Generiert ein neues Bild mit angegebener Bildgröße auf der Grundlage des erstellten
security-Codes. Die Bilddaten sind in der Eigenschaft PictureBmp als Bitmap-Handle und in der Eigenschaft ImageJpgData als Kopie im Jpg-Formt enthalten.
- SaveAsJpg (Filename, Quality)
Speichert das generierte Bild als JPEG-Datei im Dateisystem ab. Filename enthält Verzeichnis und Dateiname, Quality ist ein Wert von 1 bis 100 und hat Einfluss auf die Komprimierung der JPG-Bilddatei.
Eigenschaften
- BackgroundColor (long)
Gibt die Hintergrundfarbe an, auf der die Zeichenfolge geschrieben wird.
Der Wert setzt sich aus den Komponenten ARGB zusammen. A steht für Alpha (Transparenz), R für den Rot-Anteil, G für den Grün-Anteil und B für den Blau-Anteil.
Die technische Realisierung des Wertes findet durch Belegung eines doubleword (0xAARRGGBB) statt. Bsp: dWordARGB = 0xFF004488 ergibt eine deckende Farbe mit überwiegend bleuen Anteil.
- FontColor (long)
Gibt die Schriftfarbe an, mit der die generierte Zeichenfolge geschrieben wird. (ARGB-Wert siehe Beschreibung in Eigenschaft BackgroundColor).
- FontEffectFlags (long)
Gibt an, ob Effekte wie wechselnde Hintergrundfarbe (1), wechselnde Textfarben (2), wechselnde Schriftarten (4), Schriftumrandung (8), ausgefülltes Zeichen mit Rand (16) oder Schatten (32) gezeichnet werden.
Flags können unabhängig voneinander kombiniert werden.
Das Zeichnen des security-Codes mit wechselnder Hintergrundfarbe und Schriftumrandung wird durch die Flags 1 und 8 kombiniert. Der Parameter enthält damit folgenden Wert: 9 (Bit 1 und Bit 8 = 8 + 1 = 9).
Bsp: Wert: 15 setzt sich zusammen aus Flag 8, 4, 2 und 1, denn 1 + 2 + 4 + 8 = 15.
In diesem Fall wird die Hintergrundfarbe bei jeder neuen Zeichenfolgengenerierung gewechselt, die Schriftfarbe und Schriftart bei jedem Zeichen gewechselt und die Schrift umrandet.
- FontEffectsRndFlags (long)
Gibt an, ob die eingestellten Schrifteffekte (FontEffectFlags) zufällig oder ständig zugeschaltet werden (z.B.: Flag 16: Schrift mit oder ohne Umrandung zeichnen, Flag 32: Schriftgröße zufällig wechseln, Flag 64: Schriftstil zufällig beeinflussen, Flag 128: x-Position zufällig beeinflussen, Flag 256: y-Position zufällig beeinflussen).
- FontName (String)
Gibt den Namen der Schriftart an. Voreinstellung ist die Schriftart Arial.
- ImageDibData (variant)
Enthält die Bilddaten des generierten Bildes als Kopie im geräteunabhängigen
BMP-Format.
- ImageJpgData (variant)
Enthält die Bilddaten des generierten Bildes als Kopie im JPG-Format.
- NoiseFlags (long)
Gibt den Grad der Störungseffekte an. Störeffekte können Kombinationen aus folgenden Flags enthalten: 0: keine Störungen, 1: horizontale Linien, 2: vertikale Linien, 4: kreisförmige Punkte, 8: Unterbrechungen der Schriftzeichen, 16: Flächenobjekte (Kreise und Rechtecke) im Wechsel zeichnen.
- NoiseRndFlags (long)
Gibt an, ob die eingestellten Störungen zufällig (entsprechendes Flag 1) oder ständig (entsprechendes Flag 0) zugeschaltet werden.
- PictureBmp (handle)
Liefert das Bitmap-Handle des generierten Bildes zurück.
- SecCodeCaseMode (long)
Gibt an, ob 0: Großschreibung, 1: Kleinschreibung oder 2: gemischt dargestellt wird.
- SecCodeCharMode (long)
Gibt an, ob 0: Hexadezimale, 1: nur Buchstaben, 2: nur Ziffern oder 3: gemischte Angaben im security-Code enthalten sind.
- SecCodeStr (String)
Gibt den durch die Methode CreateNewSecCodeStr generierten security-Code an.
- ShadowOffsetPosX (long)
Gibt die Position des Schattens in horizontaler Richtung an (in px).
- ShadowOffsetPosY (long)
Gibt die Position des Schattens in vertikaler Richtung an (in px).
Objekterstellung in ASP-Seiten
Set
obj = Server.CreateObject("ISSB.CaptchaDataCtrl")
Nutzung der Methoden in ASP-Seiten
´
generiert eine neue Zeichenfolge der Länge 4
obj.CreateNewSecCodeStr(4)
´
generiert ein Bild, welches den Securitycode enthält
obj.CreateNewSecCodeImg 160, 40
´
schreibt die Bilddaten zum Client
Response.BinaryWrite obj.ImageJpgDat
Zerstörung des Objektes
Set
obj = Nothing
CaptchaCom in Aktion
Neuer Code
Beispiel (Webseite
SecCodeImg.asp)
‘
Objekterstellung
Set
oCAPTCHA = Server.CreateObject("ISSB.CaptchaDataCtrl")
‘
Buchstaben und Ziffern gemischt
oCAPTCHA.SecCodeCharMode
= 3
‘ nur Kleinbuchstaben verwenden
oCAPTCHA.SecCodeCaseMode
= 1
‘
den security-Code erstellen
oCAPTCHA.CreateNewSecCodeStr
4
‘
1: wechselnde Hintergrundfarbe, 2: wechselnde Textfarbe, 4: wechselnde
Schriftart, 8: Schriftumrandung, 16: ausgefülltes Zeichen mit Rand
und 32: mit Schatten
oCAPTCHA.FontEffectFlags
= 1 + 2 + 4 + 8 + 16 + 32
‘ die gesamten FontEffekte sollen zufällig
wechseln
oCAPTCHA.FontEffectsRndFlags
= &hFFFFFFFF
‘
Störungen durch Linien und Flächen
oCAPTCHA.NoiseFlags
= 1 + 2 + 16
‘
nun das Bild erstellen
oCAPTCHA.CreateNewSecCodeImg
200, 100
‘
Datenübertragung zum Client (Browser)
Response.ContentType = “image/jpeg”
Response.Write
oCAPTCHA.ImageJpgData
‘
Objektfreigabe
Set
oCAPTCHA
= Nothing
Die
Beschreibung der Integration der CAPTCHA-Komponente in C++ Code wird
noch erarbeitet und mit Beispielen veröffentlicht.
[CaptchaCom Komponente herunterladen] [CaptchaCom Komponente
incl. ASP-Webseite herunterladen]
© 2006 ISSB. Alle
Rechte vorbehalten.
|