![]() |
Willkommen, Gast ( Anmelden | Registrierung )
![]() ![]() |
![]() |
![]()
Beitrag
#1
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() 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 |
|
|
![]()
Beitrag
#2
|
|
DELETE FROM users WHERE search_count < 1 ![]() 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... ![]() 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... ![]() 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.... ![]() Das wären auf die Schnelle die Dinge, die mir einfallen... Bis dann, Lars |
|
|
![]()
Beitrag
#3
|
|
____________________ ![]() Gruppe: Admin Beiträge: 1.220 Mitglied seit: 20.10.2001 Mitglieds-Nr.: 3 ![]() |
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 ![]() 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 |
|
|
![]()
Beitrag
#4
|
|
Nachschlagewerk des Orakels ![]() 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.
|
|
|
![]()
Beitrag
#5
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() 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 |
|
|
![]()
Beitrag
#6
|
|
____________________ ![]() Gruppe: Admin Beiträge: 1.220 Mitglied seit: 20.10.2001 Mitglieds-Nr.: 3 ![]() |
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. |
|
|
![]()
Beitrag
#7
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() 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 |
|
|
![]()
Beitrag
#8
|
|
____________________ ![]() Gruppe: Admin Beiträge: 1.220 Mitglied seit: 20.10.2001 Mitglieds-Nr.: 3 ![]() |
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 |
|
|
![]()
Beitrag
#9
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() 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 |
|
|
![]()
Beitrag
#10
|
|
Nachschlagewerk des Orakels ![]() 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?
|
|
|
Google Bot |
![]()
Beitrag
#
|
![]() Google Ads ![]() |
|
|
|
![]() ![]() |
![]() |
Vereinfachte Darstellung | Aktuelles Datum: 15.05.2025 - 18:23 |