Captcha

Aus SiteparkWiki
Version vom 18. August 2009, 12:20 Uhr von Sed (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Die Captcha-Funktionalität dient zur Sicherung von Live-Seiten. Es handelt sich hierbei um einen Schutzmechanismus vor automatisierten Zugriffen durch sog. Robots. Realisiert wird dies durch die Darstellung eines kleinen Bildes in dem Wörter verzerrt angezeigt werden, die der Anwender in ein entsprechendes Formularfeld übertragen muss. Ein interner Mechanismus sorgt dafür, dass stets ein neues Bild erstellt wird und dieses auch nur genau einmal verwendet werden kann. Ist die Eingabe nicht korrekt, so kann eine entsprechende Meldung generiert werden.

<img src="<sp:url uri="/ies/captcha"/>">

Mit diesem Code (s.o.) kann bei einer Live-Seite in dem entsprechenden Publisher (als "Live" konfiguriert) ein Captcha-Bild erzeugt werden. Falls man ein Formular absendet, ohne einen IES-Handler zu verwenden (Email o.ä.), kann man wie folgt vorgehen:

Neben dem Bild gibt man ein Input-Text Feld an, dessen Name SYS_captcha ist. Wird das Formular abgeschickt, so kann mit diesem Aufruf EINMAL (wichtig) geprüft werden, ob die Eingabe dem Bild entsprach:

<sp:if name="system.captcha.equals(${SYS_captcha})">true</sp:if>

Beispiele

Im folgenden werden zwei Beispiele für den Einsatz der Captcha-Funktionalität gezeigt. Im ersten Fall wird ein einfaches Formular einer .spml-Datei über ein Captcha-Bild geschützt. Die Auswertung des Formulars, sowie die Prüfung des Captcha erfolgt innerhalb dieser Live-Seite. Das zweite Beispiel beschreibt die Integration eines Captcha in eine Live-Applikation wie z.B. die Anmeldung zu einem Newsletter. In diesem Fall wird das Formular an einen Handler des IES gesendet und das Captcha dort ausgewertet.

Beispiel einer Live-Seite:

<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://www.sitepark.com/taglibs/core" prefix="sp" %>

<html>
<body>

<h1>captcha test</h1>
SYS_captcha: <sp:print name="SYS_captcha"/><br/>

<sp:if name="system.captcha.equals(${SYS_captcha})"><b>valid captcha!</b><br/></sp:if>

<form action="captcha_test.spml">
<img src="<sp:url uri="/ies/captcha"/>"/><br/>
<input type="text" name="SYS_captcha"/><br/>
<input type="submit" value="submit"/>
</form>

</body>
</html>

Beispiel einer Live-Applikation:

Falls man Captcha bei Live-Applikationen einsetzen möchte, muss man über das Login-Tag eine Session erzeugen, die nur zusammen mit Captcha-Handler aufgerufen werden kann. Hierzu hat der Login-Tag das neue Attribut "captcharequired" mit den möglichen Werten "true" bzw. "false". Der Formularfeldname für die Eingabe des Captchas ist ebenfalls SYS_captcha. Ist das Captcha nicht valide, wird der Fehler "SYS-E011" gesetzt, den man abfragen kann.

<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://www.sitepark.com/taglibs/core" prefix="sp" %>

<sp:login
login="liveaccount"
password="avKuf7Rq"
namespace="test_client"
captcharequired="true"/>

<sp:error code="SYS-E011">
<b>invalid captcha!</b><br/>
</sp:error>

<sp:form
uri="captcha_gui_test.spml"
handler="com.sitepark.ies.control.jsp.handler.InformationHandler"
method="post"
name="articleForm">

<sp:hidden type="virtual" name="SYS_INFE_parent" value="${!{gui.informations}}"/>
<sp:hidden type="virtual" name="SYS_INFE_articleType" value="no-page"/>
<sp:hidden type="virtual" name="SYS_INFE_action" value="create"/>

Name:<br/>
<sp:text type="virtual" name="SYS_INFE_name"/><br/>

Captcha:<br/>
<img src="<sp:url uri="/ies/captcha"/>"/><br/>
<sp:text type="virtual" name="SYS_captcha"/><br/>

<input type="submit" value=" eintragen "/>
</sp:form>