http://www.botmaster.net/more1/
Visual Confirmation und Activation-Code per Mail taugen da auch nicht mehr viel, denn diese Tools beherrschen auch das:
http://www.botmaster.net/pictocod/
Ich habe mich deshalb zu einem neuen und hoffentlich effektiveren Weg durchgerungen. Die Grundidee dabei ist die, dass ich die Feldnamen im Registrierungsformular ändere. Nun denke ich jedoch, es mach wenig Sinn, diese Feldnamen einmalig zu ändern. Da ist es dann nur eine Frage der Zeit, bis die Spambots das mitkriegen. Ich ändere also nach jeder Registrierung die Feldnamen, so dass ich dynamische Feldbezeichner im Registrierungsformular habe.
Und so mache ich das:
In der Tabelle phpbb_config unter Verwendung von PhpMyAdmin folgendes SQL-Statement ausführen:
Code: Alles auswählen
INSERT INTO phpbb_config (config_name, config_value) VALUES ('register_username', 'neuerusername')
Öffne includes/usercp_register.php
Suche:
Code: Alles auswählen
$username = ( !empty($HTTP_POST_VARS['username']) ) ? phpbb_clean_username($HTTP_POST_VARS['username']) : '';
Code: Alles auswählen
// dynamischer Feldname für Registrierung - Formularfeldname
$username = ( !empty($HTTP_POST_VARS[$board_config['register_username']]) ) ? phpbb_clean_username($HTTP_POST_VARS[$board_config['register_username']]) : '';
// dynamischer Feldname für Registrierung - Formularfeldname
Suche:
Code: Alles auswählen
if ( !($result = $db->sql_query($sql, BEGIN_TRANSACTION)) )
{
message_die(GENERAL_ERROR, 'Could not insert data into users table', '', __LINE__, __FILE__, $sql);
}
Code: Alles auswählen
// dynamischer Feldname für Registrierung - Neuen Feldnamen generieren
$rand_username_length = 12;
$string_letters = "abcdefghijklmnopqrstuvwxyz";
$rand_username = "";
for ($i=0; $i<$rand_username_length; $i++) $rand_username .= substr($string_letters, rand(0,25), 1);
$sql = "UPDATE " . CONFIG_TABLE . " SET config_value = '" . $rand_username . "' WHERE config_name = 'register_username'";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not change Registration-Field-Names', '', __LINE__, __FILE__, $sql);
}
// dynamischer Feldname für Registrierung - Neuen Feldnamen generieren
Nun fehlt noch der Platzhalter für das Template:
Suche:
Code: Alles auswählen
$template->assign_vars(array(
'USERNAME' => isset($username) ? $username : '',
Code: Alles auswählen
// dynamischer Feldname für Registrierung - Template-Platzhalter
'REGISTER_USERNAME_FIELD' => $board_config['register_username'],
// dynamischer Feldname für Registrierung - Template-Platzhalter
Öffne templates/subSilver/profile_add_body.tpl
Suche:
Code: Alles auswählen
<td class="row2"><input type="hidden" name="username" value="{USERNAME}" /><span class="gen"><b>{USERNAME}</b></span></td>
Code: Alles auswählen
<td class="row2"><input type="hidden" name="{REGISTER_USERNAME_FIELD}" value="{USERNAME}" /><span class="gen"><b>{USERNAME}</b></span></td>
Öffne includes/usercp_register.php
Suche:
Code: Alles auswählen
$trim_var_list = array('cur_password' => 'cur_password', 'new_password' => 'new_password', 'password_confirm' => 'password_confirm', 'signature' => 'signature');
Code: Alles auswählen
if ($HTTP_POST_VARS['username'])
{
sleep (20);
message_die(GENERAL_MESSAGE, 'You are a Spambot', '', __LINE__, __FILE__);
}

So, ich habe das mal so in einem meiner Boards eingebaut und beobachte jetzt, was passiert. Wers ausprobieren will, soll das tun, aber nicht vergessen, erst die Dateien, die verändert werden zu backupen.
Für Verbesserungsvorschläge, Hinweise, Anmerkungen und Ratschläge bin ich natürlich dankbar.
Greetz
Hamlet