Zum Inhalt wechseln



- USB-Partner (Interessiert?) -
Foto

[Frage] PHP und die GD2 Lib / Gästebuch AntiSpam


  • Please log in to reply
18 replies to this topic

#1
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M
Nachdem das Gästebuch auf meiner Website von oben bis unten vollgespammt wurde, hab ich mich dazu beschlossen, eine kleine Sicherheitsabfrage mit dynamisch erzeugten Grafiken zu proggen wie man sie von z.B. von Seiten wie rapidshare.de kennt ("Bitte geben sie die folgenden 5 Zeichen ein...").

Komischerweise kann ich auf meiner lokalen Workstation (Apache2, PHP5.2) die GD2 Bibliothek nicht nutzen, obwohl sie eigentlich seit PHP4 Bestandteil des Pakets sein sollte... Hab mir gerade auch nochmal die Bibliothek ausm Netz gesaugt, kompiliert, den Apache neu gestartet aber es klappt immer noch nicht :P

Auf meinem Server funktioniert's tadellos... Aber irgendwie isses recht müßig, immer erst die Dateien zum Testen auf den Server zu schieben.

Hat jemand nen Tipp für mich..? :P
  • 0

#2
M-Base

M-Base

    Schmunzelmonster

  • Mitglied
  • 17.907 Beiträge
  • Geschlecht:M
frag ma bazz-dee der hat das bei sich jetz auch gemacht. vielleicht kann er dir da weiterhelfen.
  • 0
Hage? Jemand ze Hage?, Rapante, Rapante, lassn haate daate! Manno!
ähm.... AUTSCHN!!!


Schaue niemals einer Frau in die Augen, während sie eine Banane isst.

"Es gibt eine Sorte ungemein überlegener Menschen, die gern versichern, alles sei relativ. Das ist natürlich Unsinn, denn wenn alles relativ wäre, gäbe es nichts, wozu es relativ sein könnte" (Bertrand Russell)

#3
Guest_Valhalla_*

Guest_Valhalla_*
  • Guests
Google mal nach captcha

Gibt da auch schon so vorgefertigte Instanzen. Brauchste den Lumpatz net selber coden :P :P
  • 0

#4
Gerd

Gerd

    USB-Diplomat

  • USB-Security
  • 25.222 Beiträge
  • Vorname: Gerd
  • Geschlecht:M
Ich würde mir gar nich die Arbeit mit ner Grafikbibliothek machen :P Erzeuge doch einfach so ne zufällige Zeichenfolge und frag die beim posten ab. Nur mal so als Beispiel:

$gbuch_code = substr(md5(microtime()),0,4)

Zeit vom Server nehmen, daraus einfach den MD5 erechnen lassen und das ganze auf 5 Stellen kürzen und diese dann beim posten eines Beitrages abfragen! Haste in 2 Minuten gecodet... :P
  • 0
Eingefügtes Bild Eingefügtes Bild Collectivo Ultra Francoforte Eingefügtes Bild Eingefügtes Bild

Wenige sind imstande, von den Vorurteilen der Umgebung abweichende Meinungen gelassen auszusprechen; die meisten sind sogar unfähig, überhaupt zu solchen Meinungen zu gelangen. (Albert Einstein)

Wer seiner eigenen Sache untreu wird, kann nicht erwarten, dass ihn andere achten. (Albert Einstein)

#5
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M

Ich würde mir gar nich die Arbeit mit ner Grafikbibliothek machen /public/style_emoticons/default/noidea.g... Erzeuge doch einfach so ne zufällige Zeichenfolge und frag die beim posten ab. Nur mal so als Beispiel:

$gbuch_code = substr(md5(microtime()),0,4)

Zeit vom Server nehmen, daraus einfach den MD5 erechnen lassen und das ganze auf 5 Stellen kürzen und diese dann beim posten eines Beitrages abfragen! Haste in 2 Minuten gecodet... /public/style_emoticons/default/read.gif...

Äääääääh... Dir ist klar, dass die Zeichenfolge dann in Klartext im Quelltext steht? Das ist ja nu nicht Sinn und Zweck der Übung.

Ich hab gestern trotzdem schon mal angefangen was zu coden:

http://www.p-stylez.com/antispam.php

Im Moment generiert die Seite immer nur eine neue Grafik mit Groß- und Kleinbuchstaben. Die Abfrage werd ich dann heute mal proggen.


@ Valhalla

Ich weiss, aber da ich beruflich momentan viel mit PHP mache, wollt ich das ganz einfach mal als Übung proggen
  • 0

#6
Gerd

Gerd

    USB-Diplomat

  • USB-Security
  • 25.222 Beiträge
  • Vorname: Gerd
  • Geschlecht:M

Äääääääh... Dir ist klar, dass die Zeichenfolge dann in Klartext im Quelltext steht? Das ist ja nu nicht Sinn und Zweck der Übung.


Und? Dachte Sinn und Zweck wäre es den Spam zu verhindern, das tut es bei mir wunderbar :P Niemand macht sich die Mühe ein eigenes Prog zu coden was meine Gästebücher vollspamen kann :P

Wenn du das als "Übung" betrachtest ist es natürlich was anderes, da kann man dann ruhig mal mit Kanonen auf Spatzen schießen :P

Ich hasse diese Grafikdinger, ich erkenn die Zeichen nie richtig :P
  • 0
Eingefügtes Bild Eingefügtes Bild Collectivo Ultra Francoforte Eingefügtes Bild Eingefügtes Bild

Wenige sind imstande, von den Vorurteilen der Umgebung abweichende Meinungen gelassen auszusprechen; die meisten sind sogar unfähig, überhaupt zu solchen Meinungen zu gelangen. (Albert Einstein)

Wer seiner eigenen Sache untreu wird, kann nicht erwarten, dass ihn andere achten. (Albert Einstein)

#7
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M
Wenn Du wüsstest wie mein Gästebuch in letzter Zeit aussah, dann würdest Du auch die schweren Geschütze auspacken :P

Also wenn's bei Dir funzt isses ja gut :P
Aber ehrlich gesagt isses keine allzu schwere Aufgabe den HTML Code einer Website nach dieser zufälligen Zeichenfolge zu durchsuchen...

Spambots der nächsten Generation werden bestimmt mit diesem Feature ausgestattet werden.
  • 0

#8
Gerd

Gerd

    USB-Diplomat

  • USB-Security
  • 25.222 Beiträge
  • Vorname: Gerd
  • Geschlecht:M
Naja...der Bot müsste erst mal wissen welche Zeichenfolge er in welchem Feld benutzen müsste, mehr als 1 Versuch pro 3 Minuten hat er dann eh nicht (lasse IP kurz in der DB speichern). Zudem hab ich den Felder auch nich die klassischen Namen wie "name", "email" usw. gegeben! hatte seitdem keinen einzigen spameintrag und falls doch kann ich das ja immer noch umcoden!. bin halt von natur aus ein fauler mensch :P
  • 0
Eingefügtes Bild Eingefügtes Bild Collectivo Ultra Francoforte Eingefügtes Bild Eingefügtes Bild

Wenige sind imstande, von den Vorurteilen der Umgebung abweichende Meinungen gelassen auszusprechen; die meisten sind sogar unfähig, überhaupt zu solchen Meinungen zu gelangen. (Albert Einstein)

Wer seiner eigenen Sache untreu wird, kann nicht erwarten, dass ihn andere achten. (Albert Einstein)

#9
Bazz-Dee

Bazz-Dee

    Bayernfrontgeneral

  • Mitglied
  • 7.688 Beiträge
  • Geschlecht:M

Ich würde mir gar nich die Arbeit mit ner Grafikbibliothek machen /public/style_emoticons/default/noidea.g... Erzeuge doch einfach so ne zufällige Zeichenfolge und frag die beim posten ab. Nur mal so als Beispiel:

$gbuch_code = substr(md5(microtime()),0,4)

Zeit vom Server nehmen, daraus einfach den MD5 erechnen lassen und das ganze auf 5 Stellen kürzen und diese dann beim posten eines Beitrages abfragen! Haste in 2 Minuten gecodet... /public/style_emoticons/default/read.gif...


also das hat bei mir nicht funktioniert. das mit den grafiken allerdings schon. seit dem kein einziger spam eintrag
  • 0

Ich versteh die Frage nicht


#10
Zak McCoy

Zak McCoy

    #tigerblood

  • Mitglied
  • 4.312 Beiträge
  • Geschlecht:M
nachdem ich auch die grafik abfrage eingebaut habe schreiben nur noch weniger leute... verstaendlicherweise es is ja auch nervig...

ich teste zur zeit noch eine andere loesung die sich "bot trap" nennt womit eine hisige datenbank erzeugt wird auf der alle zu sperrenden ips laufen und die dann ausgesperrt werden aenlich wie htaccess nur sicherer und besser :P

http://www.bot-trap.de

dort gibts genauere infos :P
  • 0

#11
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M
So, ich hab mal was weiter gecodet.
Hab das Handling mittels Sessionvariablen gelöst... Ist vielleicht nicht das eleganteste, aber vielleicht hat ja jemand noch nen besseren Vorschlag :P

So sieht das Ganze in Aktion aus: www.p-stylez.com/antispam.php


Und hier der Code:

antispam.php

<?php



session_start();



define(LENGTH, 5);



srand ((double)microtime()*1000000);



$randString = "";



for ($i = 0; $i < LENGTH; $i++){

	// erzeugt einen Zufallswert zwischen Ascii 'A' und Ascii 'Z'

	$randvar = rand(65,90);

	fmod($randvar, 2) != 0 ? 

  $randString .= chr($randvar) :

  $randString .=  strtolower(chr($randvar));

}



$_SESSION['randstring'] = $randString;



?>



<html>

	<head>

  <title>Anti SpamBot Test</title>	

	</head>

	

	<body>

  <img src="grafik.php">  

	<form action="verifyinput.php" method="POST">

	Code eingeben:

	<input type="text" name="input" value="">

	<input type="submit" value="ABSCHICKEN">

	<input type="button" value="Neue Grafik" onclick="javascript:location.reload()">

	</form>

	</body>

</html>


grafik.php

<?php



session_start();



$randString = $_SESSION['randstring'];



$width = 120;

$height = 40;



$image = imagecreate($width, $height);

$bgcolor = imagecolorallocate($image, 0xAA, 0xAA, 0xAA);

$fgcolor = imagecolorallocate($image, 0, 0, 0);



$ttfont = dirname(__FILE__) . "/bandit.ttf";

$fontsize = 25;



// Zufallszahlengenerator initialisieren

srand ((double)microtime()*1000000);



$x = 0;



for ($i = 0; $i < strlen($randString); $i++){	

  $area = imagettfbbox($fontsize, 0, $ttfont, $randString{$i});



  $x += $area[4] - $area[6]; 

  $y = round(($height/2) - ($area[7]/2), 0);

  

  imagettftext($image, $fontsize, rand(-30,30), $x, $y, $fgcolor, $ttfont, $randString{$i});

  $randString .= $char;

}



header("Content-type: image/png");

imagepng($image);

imagedestroy($image);



?>


verifyinput.php

<?php



session_start();



?>



<html>

	<head>

  <title>Anti SpamBot Test (Verify)</title>	

	</head>

	

	<body>



<?php



if (isset($_SESSION['randstring']) && isset($_POST['input'])){

	// Eine Eingabe wurde uebermittelt

	$submRandString = $_SESSION['randstring'];

	$inputString = $_POST['input'];



	if ($submRandString == $inputString) {

  echo "Thanks for your entry :)";

	} else {

  echo "It seems that your input was wrong.<br>";

  echo "Click <a href="antispam.php">here</a> to return to the entry form.";

	}

}



?>

	</body>

</html>

  • 0

#12
Bazz-Dee

Bazz-Dee

    Bayernfrontgeneral

  • Mitglied
  • 7.688 Beiträge
  • Geschlecht:M
Also ich erstelle die Zufallvariable direkt im Bilderzeuger. Und übergebe nur die MD5 Summe davon :P
  • 0

Ich versteh die Frage nicht


#13
Guest_Valhalla_*

Guest_Valhalla_*
  • Guests
Du könntest das Gästebuch auch mit Flash / PHP machen ... da brauchste keine Sicherheitsabfrage, da Spam-Bots die SWF Dateien net interpretieren können...
  • 0

#14
Synthor

Synthor

    Sub.FM addicted

  • USB-Security
  • 12.868 Beiträge
  • Geschlecht:M
wir coden zur zeit an nem php/mysql cms und haben bei der registrierung auch auf generierte grafik gesetzt. aber bei uns hatten wir keine probs mit fehlenden bibliotheken...und wir entwickeln unter windows und xampp :P
  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;

#15
Josh Revilo

Josh Revilo

    Durchfeierer

  • Mitglied
  • 191 Beiträge
  • Geschlecht:M
Also für mein Gästebuch haben auch wesentlich einfachere Maßnahmen gegriffen, als diese Grafikcodes. In meinem Forum hingegen benutzt ich Capcha Grafiken bei der Registrierung, was allerdings absolut garnichts genützt hat, da genausoviele Spamdummyuser registriert werden, wie vorher. Ich seh da nur zwei mögliche Erklärungen für:

1.) Die haben mittlerweile Tools um selbst die in Captchagrafiken versteckten Codes auszulesen

2.) Die beschäftigen irgendwelche Kinder, die manuell alles vollspammen.

Da mein Forum Emailaktivierung erfordert, und keiner der Spamaccounts über diesen Weg aktiviert wird, vermute ich, dass es nach wie vor Bots sind und diese die Grafikcodes erkennen können. Das oder Phpbb hat ne Lücke und die ganze Codeabfragerei lässt sich umgehen.
  • 0

#16
Guest_Valhalla_*

Guest_Valhalla_*
  • Guests

1.) Die haben mittlerweile Tools um selbst die in Captchagrafiken versteckten Codes auszulesen

2.) Die beschäftigen irgendwelche Kinder, die manuell alles vollspammen.


Sowohl als auch :P :P

Die Sicherheit der CAPTCHA-Methode ist umstritten. Während Wissenschaftler und auch Hobbyisten Programme entwickeln, die diese Hürden in bis zu 90 Prozent der Fälle austricksen können, argumentieren die Anbieter, der Schutz erfülle in der Praxis seinen Zweck. Die so geschützten Dienste würden kaum von Spammern missbraucht. Belastbare Zahlen darüber, wieviele menschliche Besucher damit abgeschreckt werden, gibt es freilich nicht.



Spammer setzen neben Software zuweilen einfach Menschen zum Lösen der CAPTCHAs ein. Entweder werden billige (und willige) Arbeitskräfte darauf angesetzt oder aber unfreiwillige Mithelfer per Mail rekrutiert .

Auch interessant ist dieser Ansatz:

Einige Online-Dienste (etwa Hotmail) bieten daher hörbare CAPTCHAs als Alternative an. Hierbei sollen vorgelesene Zeichenfolgen eingetippt werden. Da die zuweilen stark verzerrten Bilder auch manchem nichtbehinderten Besucher unlösbare Rätsel aufgeben, weichen auch sie auf die Audio-Alternative aus. Vor allem jedoch sind sie genervt und ziehen womöglich zu einem anderen Anbieter weiter, der weniger Hürden aufgebaut hat.



Neuere Varianten stellen dem Besucher kleine Aufgaben, die ein Mensch leicht lösen kann, während automatische Programmen scheitern sollen. So setzt " Kittenauth " auf Katzenbilder, die von anderen Tierfotos unterschieden werden sollen. Andere Seiten arbeiten mit kleinen Textaufgaben, beispielsweise "welcher Farbe hat der Himmel an einem sonnigen Tag" oder "wieviele Finger hat eine Hand".

Quelle: PCWelt



Mal gespannt wann ein Gästebucheintrag oder dergleichen nur noch mit biometrischem Datenabgleich funktioniert :P

Greetz
  • 0

#17
Bazz-Dee

Bazz-Dee

    Bayernfrontgeneral

  • Mitglied
  • 7.688 Beiträge
  • Geschlecht:M
100%ige Sicherheit erreichst du eh nicht.
Denn kaum is eine neue Technik auf dem Markt sind auch die ersten Leute damit beschäftigt diese zu umgehen.
Natürlich ist Zeichenerkennung in Bilder jetzt nicht unbedingt die allerschwierigste Aufgabe, vor allem wenn der Text ohne Verzerrungen/Linien im Hintergrund im Bild ist, wie bei mir. Dennoch hab ich seit dem keine Spameinträge mehr gehabt.
Aber selbst die Audioverifizierung ist nicht schwer zu umgehen in einer Zeit wo es sowieso schon einige gute Spracherkennungsalgorithmen gibt (eine Ausnahme bildet wahrscheinlich die Spracherkennung von Vista :P).

Von daher bleibt wohl echt nur noch der eindeutige Fingerabdruck, welche man dann Blacklisten kann. Ich fang dann schon mal mit der Entwicklung der nötigen PHP Bibliotheken an. :P
  • 0

Ich versteh die Frage nicht


#18
Gerd

Gerd

    USB-Diplomat

  • USB-Security
  • 25.222 Beiträge
  • Vorname: Gerd
  • Geschlecht:M

Von daher bleibt wohl echt nur noch der eindeutige Fingerabdruck, welche man dann Blacklisten kann. Ich fang dann schon mal mit der Entwicklung der nötigen PHP Bibliotheken an.  /public/style_emoticons/default/hello.gi...


Na dann hau mal rein :P :P :P :P

...die Spamer werden dann wildfremden Leuten die Finger abschneiden und der Finger is dann sicher 2-3 Tage gültig bis er in ner Blacklist landet :P
  • 0
Eingefügtes Bild Eingefügtes Bild Collectivo Ultra Francoforte Eingefügtes Bild Eingefügtes Bild

Wenige sind imstande, von den Vorurteilen der Umgebung abweichende Meinungen gelassen auszusprechen; die meisten sind sogar unfähig, überhaupt zu solchen Meinungen zu gelangen. (Albert Einstein)

Wer seiner eigenen Sache untreu wird, kann nicht erwarten, dass ihn andere achten. (Albert Einstein)

#19
Bazz-Dee

Bazz-Dee

    Bayernfrontgeneral

  • Mitglied
  • 7.688 Beiträge
  • Geschlecht:M

Von daher bleibt wohl echt nur noch der eindeutige Fingerabdruck, welche man dann Blacklisten kann. Ich fang dann schon mal mit der Entwicklung der nötigen PHP Bibliotheken an.  /public/style_emoticons/default/hello.gi...


Na dann hau mal rein /public/style_emoticons/default/d.gif... /public/style_emoticons/default/lol.gif... /public/style_emoticons/default/lol.gif... /public/style_emoticons/default/lol.gif...

...die Spamer werden dann wildfremden Leuten dann die Finger abschneiden und der Finger is dann sicher 2-3 tage gültig bis er in ner Blacklist landet /public/style_emoticons/default/d.gif...


Fingerschwarzmarkt :P :P
  • 0

Ich versteh die Frage nicht





1 Besucher lesen dieses Thema

Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0