Captcha

Aus SiteparkWiki
Zur Navigation springen Zur Suche springen

Beschreibung

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 mit verzerrt dargestellten Wörtern, 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.

Über

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

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) eprüft werden, ob die Eingabe dem Bild entsprach:

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

Hier ein vollständiges Beispiel:

<%@ 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>

Fall man Captcha bei Live-GUIs mit Handlern einbauen möchte muss man über des Login-Tag eine Session erzeugen, die nur mit Captchas Handler aufrufen kann. Hierzu hat der Login-Tag das neue Attribut "captcharequired" mit den Werten "true" bzw. "false". Der Formularname für die Eingabe des Captchas ist ebenfalls SYS_captcha. Ist das Captcha nicht valide, kann wird der Fehler "SYS-E011" gesetzt, den man abfragen kann.

Hier ein vollständiges Beispiel:

<%@ 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="Wartung"
password="develop"
namespace="ies2_develop_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>

Eine funktionale Beschreibung mit Beispielen folgt.