Zum einen habe ich beim "blind schreiben" zwei Klammern vergessen, zum anderen hat der Quelltexthighlighter des Forum irgendwie meinen Quelltext "verhunzt" ( ___PHP0___
, ___PHP2___;
hab ich nicht getippt...).
Was jetzt unten steht ist also getestet.
Erstes Snippet. Das Captcha "standalone":
<?php
require_once 'ftxCaptcha.php';
$captcha = new ftxCaptcha();
if(
isset( $_POST['ftxAnswer'] )
and isset( $_POST['ftxAnswer'] )
and ( $captcha -> validateAnswer( $_POST['ftxAnswer'], $_POST['hash'] ) )
) {
echo '<p>Fein! Du hast das Captcha gelöst.</p>';
} else {
echo '<p>Löse das Captcha!</p>';
$captcha -> getForm( 'POST' );
}
Zweites Snippet: Das Captcha in ein Formular einbauen:
<?php
require_once 'ftxCaptcha.php';
$captcha = new ftxCaptcha();
if(
isset( $_POST['ftxAnswer'] )
and isset( $_POST['ftxAnswer'] )
and ( $captcha -> validateAnswer( $_POST['ftxAnswer'], $_POST['hash'] ) )
) {
######################################
# Hier Nachricht senden, bestätigen: #
######################################
header('Location: danke.html');
} else {
if( isset($_POST['name'] ) ) {
$name = $_POST['name'];
} else {
$name = '';
}
if( isset( $_POST['name'] ) ) {
$message = $_POST['message'];
} else {
$message = '';
}
?><form method="post">
<label>Ihr Name:
<input name="name" value="<?=htmlentities( $name, ENT_COMPAT | ENT_HTML5 ); ?>">
</label>
<label>Ihre Nachricht:
<textarea name="message"><?=htmlentities( $message, ENT_NOQUOTES | ENT_HTML5 );?></textarea>
</label>
<?php $captcha -> getForm( false ); ?>;
<button>senden</button>
</form>
<?php
}
?>
Nicht vergessen in der ftxCaptcha.php in Zeile 3 das Geheimnis auzutauschen. So lange dort das Original steht wird das Skript abbrechen.
Kritik
- Es gibt maximal 300 (10² * 3 ) verschiedene Aufgaben, die sich aber bei näherer Betrachtung als 2 * 10² / 2 (Bei Addition und Subtraktion ist die Reihenfolge egal) + 10², also 200 verschiedene Aufgaben erweisen.
- Als Ergebnis kommen nicht viele Zahlen in Betracht, die Zahlen zwischen 2 und 8 mit signifikant erhöhter Wahrscheinlichkeit, bis 20 mit erhöhter Wahrscheinlichkeit, über 20 nur bei Mulitplikation.
- Ein „Brut-Force-Attacke“ würde ich einfach damit probieren, stur entweder die 4,6,8 oder die 9 wiederholt zu senden.
- Dem könnte man begegnen, in dem man den Zahlenraum (bei mir 1 bis 10) vergrößert. Allerdings wird das wieder nutzerunfreundlich, denn etwas wie „14*233=“ löst längst nicht jeder im Kopf.
- Andererseits könnte ein Angreifer auch den String mit der Aufgabe parsen. Mir erscheint das als „unglaublich einfach“ - aber aus genau diesem Grund kann ich mein Geld auch anders verdienen.
Hint:
Im Übrigen setze ich beim Kontaktformular eher auf einen Spamfilter. Der meine funktioniert seit anderthalb Jahrzehnten recht ordentlich, es kommt inzwischen vielleicht ein oder zwei mal im Jahr was durch:
- Um so mehr ärgere ich mich dann 👿.