IPB

Willkommen, Gast ( Anmelden | Registrierung )

4 Seiten V   1 2 3 > »   
Reply to this topicStart new topic
> Die Robots und das Kontaktformular, Wie wehren?
Conny
Beitrag 07.01.2008 - 9:09
Beitrag #1


Kommt Zeit, kommt Rat, kommt Conrad!
Gruppensymbol

Gruppe: Mods
Beiträge: 1.169
Mitglied seit: 21.11.2001
Wohnort: Altenkirchen, Westerwald
Mitglieds-Nr.: 42



Moin,
seit einiger Zeit plagen mir unerwünschte automatisch generierte Einträge in meinem Kontaktformular.
Die Pflichtfelder werden mit nichtssagenden Floskeln ausgefüllt, der Texteintrag ist gefüllt mit Links zu zweifelhafte Seiten...
Wie kann ich sowas verhindern?
Weder der Meta Tag: <META NAME="robots" CONTENT="noindex,nofollow"> noch ein eintrag in meinem robots.txt scheint was zu bringen.

cu
Conny
Go to the top of the page
 
+Quote Post
harlequin
Beitrag 07.01.2008 - 9:39
Beitrag #2


DELETE FROM users WHERE search_count < 1
Gruppensymbol

Gruppe: Admin
Beiträge: 314
Mitglied seit: 15.07.1976
Wohnort: Osnabrück
Mitglieds-Nr.: 2



moin!

Das Problem ist, dass diese Spammer sich an nichts halten, ausser den vermeintlich zu erzielenden Umsatz... sad.gif

Es gibt mehrere Ansätze, zum einen gute Captchas, etwa mit simplen mathematischen Fragen,
oder Teilen eines Satzes. Allerdings ist es da recht schwer die Balance zwischen Lesbarkeit und Sicherheit zu finden.

Ein recht interessantes Projekt ist auch http:BL, eine Blackliste von bekannten Spammern, bzw. IP Adressen, welche sich dahingehend suspekt verhalten. Ich nutze es in meinem Blog und bin so zufrieden, dass ich die Captchas komplett ausgeschaltet habe... smile.gif
Es gibt noch andere Implentierungen von http:BL, entweder direkt für eine Software, wie Foren, Blogs, etc. oder aber direkt für den Apache...

Der letzte Weg wäre per .htaccess/modRewrite Leute aus Ländern auszusperren, die du nicht vermissen würdest... Aber das ist mühsam und vermutlich vergleichbar mit: eingerissener Fingernagel = Arm amputieren.... wink.gif

Das wären auf die Schnelle die Dinge, die mir einfallen...

Bis dann,
Lars
Go to the top of the page
 
+Quote Post
Andreas
Beitrag 07.01.2008 - 10:36
Beitrag #3


____________________
Gruppensymbol

Gruppe: Admin
Beiträge: 1.220
Mitglied seit: 20.10.2001
Mitglieds-Nr.: 3



ZITAT(Conny @ 07.01.2008 - 9:09) *
seit einiger Zeit plagen mir unerwünschte automatisch generierte Einträge in meinem Kontaktformular.
Am einfachsten zu realisieren sind Captchas. Ich setze inzwischen in allen von mir erstellten Formularen ein ganz simples Captcha mit 3 Ziffern ein und habe seit nun über einem Jahr absolute Ruhe. Und bei mir ging es teilweise hoch her wink.gif

Ich benutze die "Jax Captcha Class v1.o1" - sind ein paar Funktionen, die wirklich sehr simpel zu integrieren sind. Auch in meinem Achillessehnenforum habe ich die reingebastelt. Stört bisher niemanden und funktioniert störungsfrei.

Gruß

Andreas
Go to the top of the page
 
+Quote Post
Thomas
Beitrag 07.01.2008 - 13:20
Beitrag #4


Nachschlagewerk des Orakels
Gruppensymbol

Gruppe: Mods
Beiträge: 955
Mitglied seit: 29.08.2006
Wohnort: Frankfurt am Main
Mitglieds-Nr.: 6.217



Eine weitere Idee: Da es den Spammern meist um die Verteilung von Links geht, kannst du die betroffenen Felder auch prüfen, ob sie "www." oder "http:" enthalten (anhand der dir vorliegenden Daten solltest du recht einfach entsprechende Muster erkennen können). Ausgehend davon, dass bei normaler Nutzung des Formulars so etwas nicht drinsteht, kannst du den Versand dann verweigern. Sofern du bereits eine Überprüfung des Formularinhaltes vor dem Absenden implementiert hast, geht es so eventuell einfacher als mit Captchas.
Go to the top of the page
 
+Quote Post
Conny
Beitrag 07.01.2008 - 14:06
Beitrag #5


Kommt Zeit, kommt Rat, kommt Conrad!
Gruppensymbol

Gruppe: Mods
Beiträge: 1.169
Mitglied seit: 21.11.2001
Wohnort: Altenkirchen, Westerwald
Mitglieds-Nr.: 42



Ok, vielen Dank.
ich werde mir diese 'Captchas' Geschichte mal näher anschauen.
Ich Denke es wird wohl auf diese Captchas hinauslaufen.
Sollte es beim implementieren Fragen geben, melde ich mich einfach noch mal!

Selbst hatte ich an htaccess gedacht wobei User und Passwort auf der Seite angegeben werden, sodass nur noch 'händisch' ausgefüllt werden muss.

cu
Conny
Go to the top of the page
 
+Quote Post
Andreas
Beitrag 07.01.2008 - 15:08
Beitrag #6


____________________
Gruppensymbol

Gruppe: Admin
Beiträge: 1.220
Mitglied seit: 20.10.2001
Mitglieds-Nr.: 3



ZITAT(Conny @ 07.01.2008 - 14:06) *
Selbst hatte ich an htaccess gedacht wobei User und Passwort auf der Seite angegeben werden, sodass nur noch 'händisch' ausgefüllt werden muss.
Sowas ähnliches hatte ich zuerst auch drin. Ist eine Sache von Stunden, bis die Scripte so angepasst sind, dass die die angeforderten Daten selbst eingeben (stehen ja auch der Seite) und dann weiter spammen.

Die Abfrage auf Links etc. habe ich zusätzlich eingebaut. Funktioniert auch grob, nutzt aber nichts, wenn eben keine Links beworben werden sollen ... Captcha ist schon ziemlich wirkungsvoll und wohl auch allgemein akzeptiert, wenn man wirklich Kontakt aufnehmen möchte. Solange die Schrift halbwegs lesbar ist und nicht zu krude Kombinationen eingegeben werden müssen.
Go to the top of the page
 
+Quote Post
Conny
Beitrag 07.01.2008 - 18:59
Beitrag #7


Kommt Zeit, kommt Rat, kommt Conrad!
Gruppensymbol

Gruppe: Mods
Beiträge: 1.169
Mitglied seit: 21.11.2001
Wohnort: Altenkirchen, Westerwald
Mitglieds-Nr.: 42



Hallo,
bin bei "JAX" fündig geworden und bereits am basteln.

Möchte gerne eine Hintergrundfarbe und auch nur eine Farbe für die Buchstaben/Zahlen.
Hier die class.captcha.php
CODE
<?php
class captcha
{
var $session_key = null;
var $temp_dir = null;
var $width = 160;
var $height = 60;
var $jpg_quality = 15;


/**
* Constructor - Initializes Captcha class!
*
* @param string $session_key
* @param string $temp_dir
* @return captcha
*/
function captcha( $session_key, $temp_dir )
{
$this->session_key = $session_key;
$this->temp_dir = $temp_dir;
}


/**
* Generates Image file for captcha
*
* @param string $location
* @param string $char_seq
* @return unknown
*/
function _generate_image( $location, $char_seq )
{
$num_chars = strlen($char_seq);

$img = imagecreatetruecolor( $this->width, $this->height );
imagealphablending($img, 1);
imagecolortransparent( $img );

// generate background of randomly built ellipses
for ($i=1; $i<=200; $i++)
{
$r = round( rand( 0, 100 ) );
$g = round( rand( 0, 100 ) );
$b = round( rand( 0, 100 ) );
$color = imagecolorallocate( $img, $r, $g, $b );
imagefilledellipse( $img,round(rand(0,$this->width)), round(rand(0,$this->height)), round(rand(0,$this->width/16)), round(rand(0,$this->height/4)), $color );
}

$start_x = round($this->width / $num_chars);
$max_font_size = $start_x;
$start_x = round(0.5*$start_x);
$max_x_ofs = round($max_font_size*0.9);

// set each letter with random angle, size and color
for ($i=0;$i<=$num_chars;$i++)
{
$r = round( rand( 127, 255 ) );
$g = round( rand( 127, 255 ) );
$b = round( rand( 127, 255 ) );
$y_pos = ($this->height/2)+round( rand( 5, 20 ) );

$fontsize = round( rand( 18, $max_font_size) );
$color = imagecolorallocate( $img, $r, $g, $b);
$presign = round( rand( 0, 1 ) );
$angle = round( rand( 0, 25 ) );
if ($presign==true) $angle = -1*$angle;

ImageTTFText( $img, $fontsize, $angle, $start_x+$i*$max_x_ofs, $y_pos, $color, 'default.ttf', substr($char_seq,$i,1) );
}

// create image file
imagejpeg( $img, $location, $this->jpg_quality );
flush();
imagedestroy( $img );

return true;
}


/**
* Returns name of the new generated captcha image file
*
* @param unknown_type $num_chars
* @return unknown
*/
function get_pic( $num_chars=8 )
{
// define characters of which the captcha can consist
$alphabet = array(
'A','B','C','D','E','F','G','H','I','J','K','L','M',
'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'1','2','3','4','5','6','7','8','9','0' );

$max = sizeof( $alphabet );

// generate random string
$captcha_str = '';
for ($i=1;$i<=$num_chars;$i++) // from 1..$num_chars
{
// choose randomly a character from alphabet and append it to string
$chosen = rand( 1, $max );
$captcha_str .= $alphabet[$chosen-1];
}

// generate a picture file that displays the random string
if ( $this->_generate_image( $this->temp_dir.'/'.'cap_'.md5( strtolower( $captcha_str )).'.jpg' , $captcha_str ) )
{
$fh = fopen( $this->temp_dir.'/'.'cap_'.$this->session_key.'.txt', "w" );
fputs( $fh, md5( strtolower( $captcha_str ) ) );
return( md5( strtolower( $captcha_str ) ) );
}
else
{
return false;
}
}

/**
* check hash of password against hash of searched characters
*
* @param string $char_seq
* @return boolean
*/
function verify( $char_seq )
{
$fh = fopen( $this->temp_dir.'/'.'cap_'.$this->session_key.'.txt', "r" );
$hash = fgets( $fh );

if (md5(strtolower($char_seq)) == $hash)
return true;
else
return false;
}
}


?>


Hier lässt sich wahrscheinlich mein Problem lösen; habe bei den r, g, b schon probiert.
Werte auf 255 für Weiß und auf 0 für Schwarz.
Klappt aber noch nicht so wie ich möchte wahrscheinlich übersehe ich da was...

Bitte nachhelfen!

cu
Conny
Go to the top of the page
 
+Quote Post
Andreas
Beitrag 07.01.2008 - 20:07
Beitrag #8


____________________
Gruppensymbol

Gruppe: Admin
Beiträge: 1.220
Mitglied seit: 20.10.2001
Mitglieds-Nr.: 3



ZITAT(Conny @ 07.01.2008 - 18:59) *
Möchte gerne eine Hintergrundfarbe und auch nur eine Farbe für die Buchstaben/Zahlen.


Genau das möchte ich auch ... ich habe lediglich verschiedene Farben für die Schrift. Den Hintergrund bekommst Du mit
HTML
$hintergrund = imagecolorallocate($img, 235, 228, 211);

Den Teil mit den Elipsen habe ich auskommentiert:
HTML
// imagealphablending($img, 1);
// imagecolortransparent( $img );

// generate background of randomly built ellipses
// for ($i=1; $i<=50; $i++)
// {
// $r = round( rand( 0, 100 ) );
// $g = round( rand( 0, 100 ) );
// $b = round( rand( 0, 100 ) );
// $color = imagecolorallocate( $img, $r, $g, $b );
// imagefilledellipse( $img,round(rand(0,$this->width)), round(rand(0,$this->height)), round(rand(0,$this->width/16)), round(rand(0,$this->height/4)), $color );
// }


ZITAT
Hier lässt sich wahrscheinlich mein Problem lösen; habe bei den r, g, b schon probiert.
Werte auf 255 für Weiß und auf 0 für Schwarz.

Genau. Du musst mit den R G B Werten die gewünschte Farbe einstellen. Ich nehme dazu immer ein Grafikprogramm, mische dort eine Farbe (oder nehme sie mit der Pipette aus einem Bild) und schreibe die entsprechenden Werte ab. "PaintShop Pro" kann das, Phase 5 prinzipiell auch - zeigt Dir aber die Hex-Werte an. Habe gerade geguckt und Paint.net ( http://www.dotpdn.com/downloads/pdn.html ) kann es auch ...

Gruß

Andreas
Go to the top of the page
 
+Quote Post
Conny
Beitrag 07.01.2008 - 23:49
Beitrag #9


Kommt Zeit, kommt Rat, kommt Conrad!
Gruppensymbol

Gruppe: Mods
Beiträge: 1.169
Mitglied seit: 21.11.2001
Wohnort: Altenkirchen, Westerwald
Mitglieds-Nr.: 42



Hallo,
bin bereits ein Stückchen weiter.
Die Code wird im Formular generiert, auch die Farben sind ok.

Meine Idee ist nun, daß das Formular in zwei Schritte geprüft wird.
1. Prüfung: Ist die Code Korrekt? Wenn nein, dann Exit und die Seite lädt sich neu, bzw. es passiert nix.
Wenn ja, dann wird weitergeleitet zu der Bestätigungsseite, die (Prüfung 2) dann auch prüft ob alle restliche Felder entsprechend ausgefüllt wurden. (So hat das Formular seither funktioniert).

FORM AKTION ist jetzt also: $PHP_SELF?do=verify&session_code=$session_code?
früher war es einfach die Weiterleitung zur Prüfseite: kontaktformbest.php

Die Weiterleitung zu kontaktformbest.php soll nun eingebeddet werden und zu Ausführung gebracht wenn die Code richtig eingegeben wurde.

In der Demo Seite gibt es an dieser Stelle ein echo mit: "You entered the correct password!";
An dieser Stelle sollte imho statt ein echo nun die weiterleitung erfolgen...
Wie geht sowas??

CODE
<TABLE SUMMARY="Formular1" WIDTH="670" CELLPADDING="3" CELLSPACING="0" BORDER="0">
<TR VALIGN="top">
<TD WIDTH="100%" COLSPAN="2" CLASS="normal">
<IMG SRC="pics/transpix.gif" WIDTH="1" HEIGHT="1" VSPACE="1" HSPACE="155" ALT=""><BR>

<TABLE SUMMARY="Formular2" WIDTH="100%" CELLPADDING="10" CELLSPACING="0" BORDER="4" BGCOLOR="#EBFFC1">
<TR>
<TD>
<B>Meine Anfrage an die FN-Reitschule Conrad Beck.<A NAME="frm">*</A><BR></B><BR>
<?php
require_once( 'class.captcha.php' );

if (empty($_GET['session_code']))
{ $session_code = md5(round(rand(0,40000))); }
else
{ $session_code=$_GET['session_code']; }

$my_captcha = new captcha( $session_code, '__TEMP__/' );



$do = $_GET['do'];

if ($do == 'verify')
{
if ($my_captcha->verify( $_POST['password'] ) )
{
echo "Hier die Befehlszeile zu kontaktformbest.php";
exit;
}
}

$pic_url = $my_captcha->get_pic( 3 );

echo <<<FORM
<FORM NAME="Formular" METHOD="post" ACTION="$PHP_SELF?do=verify&session_code=$session_code?">
<FIELDSET>
<LEGEND><B>Absender</B></LEGEND>

...

<INPUT TYPE="submit" VALUE="Abschicken">

<INPUT TYPE="reset" VALUE="Verwerfen"><BR>
...
</TD></TR></TABLE>
</FIELDSET>

</FORM>
FORM;
?>
</TD></TR></TABLE>
</TD></TR></TABLE>


Vllt. bin ich auch auf dem Holzweg und muss ich alles auslagern in die kontaktformbest.php.
Oder es gibt eine noch elegantere Lösung wie Übergabe zu Prüfseite 1 mit weitergabe zu Prüfseite 2 oder entsprechend Retour.
Ich weis es nicht, meine Programmierkenntnisse bezüglich PHP sind hier eher bescheiden.

cu
Conny
Go to the top of the page
 
+Quote Post
Thomas
Beitrag 08.01.2008 - 8:37
Beitrag #10


Nachschlagewerk des Orakels
Gruppensymbol

Gruppe: Mods
Beiträge: 955
Mitglied seit: 29.08.2006
Wohnort: Frankfurt am Main
Mitglieds-Nr.: 6.217



Ohne jetzt ganz genau auf den Code geguckt zu haben: Hast du es mal mit include('kontaktformbest.php') versucht?
Go to the top of the page
 
+Quote Post
Google Bot
Beitrag
Beitrag #


Google Ads









Go to the top of the page
 
Quote Post

4 Seiten V   1 2 3 > » 
Reply to this topicStart new topic
1 Besucher lesen dieses Thema (Gäste: 1 | Anonyme Besucher: 0)
0 Mitglieder:

 



RSS Vereinfachte Darstellung Aktuelles Datum: 18.04.2024 - 8:31

taschenkalender
expertise-panel IPS Driver Error

IPS Driver Error

There appears to be an error with the database.
You can try to refresh the page by clicking here