Gästebuch: automatische Einträge abfangen

Gästebuch: automatische Einträge abfangen

am 16.06.2006 13:23:08 von Ralph Stahl

Moin,


Die Vorrede:

ich habe ein Gästebuch mit php/mySQL. Seit einiger Zeit häufen sich=20
Einträge, die offensichtlich automatisch erstellt werden (Werbung für=
=20
Pillen). Ich schicke mir bei einem Eintrag eine Mail und schreibe da=20
auch die Remote-Adresse des Erzeugers rein, die natürlich immer eine=20
andere ist genau wie die Absender-Mailadressen (wenn vorhanden), klar=20
:-).

Im Moment behelfe ich mir, indem ich eine Spamfilter gestrickt habe, der=20
den DB-Eintrag beim Auftreten einer Reihe von Wörtern verhindert.=20
Sinnvoller wäre natürlich, den automatischen Eintrag zu verhindern.

Klar kann ich das mit so einer kryptischen Zeichenfolge aus einer Grafik=20
machen, die man noch eingeben muß (gotcha). Da mich selbst sowas nervt,=
=20
will ich das aber keinem zumuten.

Soweit die Vorrede. Ich will rausfinden, wie man solche automatischen=20
Einträge macht. Mein Formular übergibt $_POST an sich selbst, die=20
Bezeichnungen der Formularfelder (=3D Post-Daten) stehen also in der=20
gleichen Datei. Irgendwer, der das Gästebuch gefunden hat (wie?) könnte=
=20
als vermutlich von einer anderen Seite aus ein passendes $_POST erzeugen=20
und damit meine Seite aufrufen. Mal abgesehen von der Mühe, sowas=20
vorzubereiten: geht das? Wenn ja, was kann ich ändern? $_POST ist es=20
immer erstmal, auch wenn ich es vielleicht per Session auf eine zweite=20
Seite übergebe.

Fazit: was gibt es für Möglichkeiten, sowas sicher zu verhindern? Wonac=
h=20
könnte ich goggeln, um das Problem zu beschreiben?=20

Für jeden Tip dankbar,
Ralph

Re: Gästebuch: automatische Einträge abfangen

am 16.06.2006 13:32:07 von Mario Rasser

Ralph Stahl schrieb:
> Moin,

13:23 ???

Guten Tag ;-)


[dein Text]
> Fazit: was gibt es für Möglichkeiten, sowas sicher zu verhindern? W=
onach=20
> könnte ich goggeln, um das Problem zu beschreiben?=20

Das Thema war vor kurzem aktuell siehe:

NG-Thread "Sicherheitscode" von Werner Meyer (13.06.2006 14:47)

Have fun,
Mario

Re: Gästebuch: automatische Einträge abfangen

am 16.06.2006 13:32:15 von Frank Schenk

Ralph Stahl wrote:
> Moin,
>
>
> Die Vorrede:
>
> ich habe ein Gästebuch mit php/mySQL. Seit einiger Zeit häufen sich
> Einträge, die offensichtlich automatisch erstellt werden (Werbung für
> Pillen). Ich schicke mir bei einem Eintrag eine Mail und schreibe da
> auch die Remote-Adresse des Erzeugers rein, die natürlich immer eine
> andere ist genau wie die Absender-Mailadressen (wenn vorhanden), klar
> :-).

Das is echtn brandaktuelles Thema, das wir hier noch nie hatten...

Ne, Ernst beiseite, such einfach mal nach Sicherheitscode, das Thema
Spam/Flood ist hier ein Dauerthema, ein bissl suchen hilft.


Frank

Re: Gästebuch: automatische Einträge abfangen

am 16.06.2006 13:37:53 von Norbert Melzer

Mario Rasser schrieb:
> Ralph Stahl schrieb:
>> Moin,
>=20
> 13:23 ???

"Moin" passt immer :-)

> Guten Tag ;-)

Ebenso.

> [dein Text]
>> Fazit: was gibt es für Möglichkeiten, sowas sicher zu verhin=
dern? Wonach=20
>> könnte ich goggeln, um das Problem zu beschreiben?=20
>=20
> Das Thema war vor kurzem aktuell siehe:
>=20
> NG-Thread "Sicherheitscode" von Werner Meyer (13.06.2006 14:47)

Zum einfacheren finden hier noch die MID des OP:

<4f7qegF1hjt1pU1@individual.net>

Re: Gästebuch: automatische Einträge abfangen

am 16.06.2006 13:52:42 von thornythegod

Ralph Stahl schrieb:

> Klar kann ich das mit so einer kryptischen Zeichenfolge aus einer Grafik
> machen, die man noch eingeben muß (gotcha). Da mich selbst sowas nervt,
> will ich das aber keinem zumuten.

Danke ;)

> Soweit die Vorrede. Ich will rausfinden, wie man solche automatischen
> Einträge macht. Mein Formular übergibt $_POST an sich selbst, die
> Bezeichnungen der Formularfelder (= Post-Daten) stehen also in der
> gleichen Datei. Irgendwer, der das Gästebuch gefunden hat (wie?) könnte
> als vermutlich von einer anderen Seite aus ein passendes $_POST erzeugen
> und damit meine Seite aufrufen. Mal abgesehen von der Mühe, sowas
> vorzubereiten: geht das? Wenn ja, was kann ich ändern? $_POST ist es
> immer erstmal, auch wenn ich es vielleicht per Session auf eine zweite
> Seite übergebe.

Ja - das geht. Wenn du das Formular absendest, wird ein passender
HTTP-Header von deinem Browser an den Webserver gesendet.
Falls du den Firefox verwendest, schau dir mal die Extension Live HTTP
Headers an.

Ein soller HTTP-Header kann von allen möglichen Stellen gesendet werden
und ist daher nicht von deinem Formular abhängig. Daher kann jeder dein
Formular abrufen. Bzw. er kann auch gleich das Ergebnis zu deinem Script
schicken ohne je dein Formular gesehen zu haben.

Gruß,
Torsten

Re: Gästebuch: automatische Einträge abfangen

am 16.06.2006 14:36:30 von Michael Weber

[Fri, 16 Jun 2006 13:52:42 +0200/=?ISO-8859-15?Q?
Torsten_Zühlsdorff?=]
> Ralph Stahl schrieb:
> > Soweit die Vorrede. Ich will rausfinden, wie man solche automatischen
> > Einträge macht. Mein Formular übergibt $_POST an sich selbst, die
> > Bezeichnungen der Formularfelder (= Post-Daten) stehen also in der
> > gleichen Datei. Irgendwer, der das Gästebuch gefunden hat (wie?) könnte
> > als vermutlich von einer anderen Seite aus ein passendes $_POST erzeugen
> > und damit meine Seite aufrufen. Mal abgesehen von der Mühe, sowas
> > vorzubereiten: geht das? Wenn ja, was kann ich ändern? $_POST ist es
> > immer erstmal, auch wenn ich es vielleicht per Session auf eine zweite
> > Seite übergebe.
>
> Ja - das geht. Wenn du das Formular absendest, wird ein passender
> HTTP-Header von deinem Browser an den Webserver gesendet.
> Falls du den Firefox verwendest, schau dir mal die Extension Live HTTP
> Headers an.
>
> Ein soller HTTP-Header kann von allen möglichen Stellen gesendet werden
> und ist daher nicht von deinem Formular abhängig. Daher kann jeder dein
> Formular abrufen. Bzw. er kann auch gleich das Ergebnis zu deinem Script
> schicken ohne je dein Formular gesehen zu haben.

Was sich IMO ziemlich wirkungsvoll verhindern lässt, wenn man in
der Session eine History führt, ob ein User vorher schon eine Seite
der Site aufgerufen hat. In Kombination mit einem Switch, der
einen HTML-Aufbau der Submit-Seite voraussetzt, kann man schon viel
verhindern. Schliesst jedoch Leute aus, die sich Gästebücher oder
Kontaktformulare bookmarken (warum auch immer; würde ich als
unwichtig einstufen) sowie URL-Direktaufrufe aus Suchmaschinen.
Jedoch werden Fill-Bots gar nicht erst wahrgenommen.

Gegen manuellen Spam ist sowieso kein vernünftiges Kraut gewachsen.
Da hilft nur engagierte Pflege.


grüsse
michael

Re: Gästebuch: automatische Einträge abfangen

am 16.06.2006 17:14:44 von Ralph Stahl

[...]

Vielen Dank für Eure Anregungen, jetzt weiß ich wenigstens, wonach ich
suchen soll.

Schönes Wochenende!
Ralph

Re: Gästebuch: automatische Einträge abfangen

am 16.06.2006 20:12:39 von Kay-Michael Voit

Mario Rasser schrieb:
> Ralph Stahl schrieb:
>> Moin,
>
> 13:23 ???
>
> Guten Tag ;-)
>

> http://www.wer-weiss-was.de/theme197/article879237.html

Davon abgesehen: Es ist Freitag, die Akademische WOche ist seit gestern
vorbei *g*

Re: Gästebuch: automatische Einträge abfangen

am 17.06.2006 11:55:19 von Ralph Stahl

In <44929b8b$0$11079$9b4e6d93@newsread4.arcor-online.net> schrieb=20
thornythegod@arcor.de:
> Ralph Stahl schrieb:
>=20
> > Klar kann ich das mit so einer kryptischen Zeichenfolge aus einer Grafi=
k=20
> > machen, die man noch eingeben muß (gotcha). Da mich selbst sowas nerv=
t,=20
> > will ich das aber keinem zumuten.
>=20
> Danke ;)
>=20
> > Soweit die Vorrede. Ich will rausfinden, wie man solche automatischen=
=20
> > Einträge macht. Mein Formular übergibt $_POST an sich selbst, die=
=20
> > Bezeichnungen der Formularfelder (=3D Post-Daten) stehen also in der=20
> > gleichen Datei. Irgendwer, der das Gästebuch gefunden hat (wie?) kö=
nnte=20
> > als vermutlich von einer anderen Seite aus ein passendes $_POST erzeuge=
n=20
> > und damit meine Seite aufrufen. Mal abgesehen von der Mühe, sowas=20
> > vorzubereiten: geht das? Wenn ja, was kann ich ändern? $_POST ist es=
=20
> > immer erstmal, auch wenn ich es vielleicht per Session auf eine zweite=
=20
> > Seite übergebe.
>=20
> Ja - das geht. Wenn du das Formular absendest, wird ein passender
> HTTP-Header von deinem Browser an den Webserver gesendet.
> Falls du den Firefox verwendest, schau dir mal die Extension Live HTTP
> Headers an.
>=20
> Ein soller HTTP-Header kann von allen möglichen Stellen gesendet werden
> und ist daher nicht von deinem Formular abhängig. Daher kann jeder dein
> Formular abrufen. Bzw. er kann auch gleich das Ergebnis zu deinem Script
> schicken ohne je dein Formular gesehen zu haben.

Eine Frage will ich mal noch nachschieben, nachdem ich ein paar=20
Experimente gemacht habe:

Klar kann ich von sonstwoher Formulardaten schicken, wenn ich die=20
Feldnamen erstmal weiß. Aber wenn ich das mache - wie kann denn dann ein=
=20
Bot das gefüllte Zielformular abschicken (also "auf den Knopf drücken")=
?=20

Ich habe also jetzt im Zielformular die Erkennung, daß das POST-Zeugs=20
nicht von der eigenen Seite kommt, und das reicht ja zum Verhindern -=20
hoffe ich.

Ralph

Re: Gästebuch: automatische Einträge abfangen

am 17.06.2006 12:34:05 von Ralph Stahl

In schrieb=20
post@rstahl.de:
> In <44929b8b$0$11079$9b4e6d93@newsread4.arcor-online.net> schrieb=20
> thornythegod@arcor.de:
> > Ralph Stahl schrieb:
> >=20
> > > Klar kann ich das mit so einer kryptischen Zeichenfolge aus einer Gra=
fik=20
> > > machen, die man noch eingeben muß (gotcha). Da mich selbst sowas ne=
rvt,=20
> > > will ich das aber keinem zumuten.
> >=20
> > Danke ;)
> >=20
> > > Soweit die Vorrede. Ich will rausfinden, wie man solche automatischen=
=20
> > > Einträge macht. Mein Formular übergibt $_POST an sich selbst, die=
=20
> > > Bezeichnungen der Formularfelder (=3D Post-Daten) stehen also in der=
=20
> > > gleichen Datei. Irgendwer, der das Gästebuch gefunden hat (wie?) k=
önnte=20
> > > als vermutlich von einer anderen Seite aus ein passendes $_POST erzeu=
gen=20
> > > und damit meine Seite aufrufen. Mal abgesehen von der Mühe, sowas=
=20
> > > vorzubereiten: geht das? Wenn ja, was kann ich ändern? $_POST ist e=
s=20
> > > immer erstmal, auch wenn ich es vielleicht per Session auf eine zweit=
e=20
> > > Seite übergebe.
> >=20
> > Ja - das geht. Wenn du das Formular absendest, wird ein passender
> > HTTP-Header von deinem Browser an den Webserver gesendet.
> > Falls du den Firefox verwendest, schau dir mal die Extension Live HTTP
> > Headers an.
> >=20
> > Ein soller HTTP-Header kann von allen möglichen Stellen gesendet werd=
en
> > und ist daher nicht von deinem Formular abhängig. Daher kann jeder de=
in
> > Formular abrufen. Bzw. er kann auch gleich das Ergebnis zu deinem Scrip=
t
> > schicken ohne je dein Formular gesehen zu haben.
>=20
> Eine Frage will ich mal noch nachschieben, nachdem ich ein paar=20
> Experimente gemacht habe:
>=20
> Klar kann ich von sonstwoher Formulardaten schicken, wenn ich die=20
> Feldnamen erstmal weiß. Aber wenn ich das mache - wie kann denn dann ei=
n=20
> Bot das gefüllte Zielformular abschicken (also "auf den Knopf drücken=
")?=20
>=20
> Ich habe also jetzt im Zielformular die Erkennung, daß das POST-Zeugs=
=20
> nicht von der eigenen Seite kommt, und das reicht ja zum Verhindern -=20
> hoffe ich.

Nein, das reicht natürlich nicht. Denn falls der Header (http_referer)=20
zu fälschen geht (?), ist das natürlich kein Schutz.

Ralph

Re: Gästebuch: automatische Einträge abfangen

am 19.06.2006 11:17:48 von thornythegod

Ralph Stahl schrieb:

>>Ja - das geht. Wenn du das Formular absendest, wird ein passender
>>HTTP-Header von deinem Browser an den Webserver gesendet.
>>Falls du den Firefox verwendest, schau dir mal die Extension Live HTTP
>>Headers an.
>>
>>Ein soller HTTP-Header kann von allen möglichen Stellen gesendet werden
>>und ist daher nicht von deinem Formular abhängig. Daher kann jeder dein
>>Formular abrufen. Bzw. er kann auch gleich das Ergebnis zu deinem Script
>>schicken ohne je dein Formular gesehen zu haben.
>
>
> Eine Frage will ich mal noch nachschieben, nachdem ich ein paar
> Experimente gemacht habe:
>
> Klar kann ich von sonstwoher Formulardaten schicken, wenn ich die
> Feldnamen erstmal weiß. Aber wenn ich das mache - wie kann denn dann ein
> Bot das gefüllte Zielformular abschicken (also "auf den Knopf drücken")?

Das muß er nicht. Der Unterschied liegt im HTTP-Header. Wenn du eine
Seite von einen Webserver abrufst, dann steht an einer bestimmten Stelle
im Header ein GET.
Wenn du Daten zum Webserver hinschickst, steht an der Stelle statt GET
ein POST.
Wenn du in einem Browser auf den Button "Absenden" klickst, erstellt
dein Browser ein solchen HTTP-Header und schickt ihm zum Server. Der Bot
erstellt nur den Header. Der Unterschied ist nicht feststellbar.

> Ich habe also jetzt im Zielformular die Erkennung, daß das POST-Zeugs
> nicht von der eigenen Seite kommt, und das reicht ja zum Verhindern -
> hoffe ich.

Nein, dass reicht nicht. Den kompletten HTTP-Header kann man auch von
Hand tippen und losschicken - er ist daher komplett fälschbar.
Desweiteren gibt es immer wieder Fälle, dass keine Referer angegeben
werden - mein Webbrowser macht das z.b. nicht.

Gruß,
Torsten

Re: Gästebuch: automatische Einträge abfangen

am 20.06.2006 09:19:07 von Ralph Stahl

In schrieb=20
post@rstahl.de:
[...]
> > Klar kann ich von sonstwoher Formulardaten schicken, wenn ich die=20
> > Feldnamen erstmal weiß. Aber wenn ich das mache - wie kann denn dann =
ein=20
> > Bot das gefüllte Zielformular abschicken (also "auf den Knopf drück=
en")?=20
[...

Schwachsinn, natürlich kann ich den Knopf auch über die passenden POST-
Vars nachbilden. Klappr "erschreckend" gut...

Kann man den http-referer (wie wird der richtig geschrieben mit PHP?=20
fälschen?

Schönes Wochenende,
Ralph

Re: Gästebuch: automatische Einträge abfangen

am 20.06.2006 09:33:42 von thornythegod

Ralph Stahl schrieb:

>>>Klar kann ich von sonstwoher Formulardaten schicken, wenn ich die
>>>Feldnamen erstmal weiß. Aber wenn ich das mache - wie kann denn dann ein
>>>Bot das gefüllte Zielformular abschicken (also "auf den Knopf drücken")?

[..]

> Kann man den http-referer (wie wird der richtig geschrieben mit PHP?
> fälschen?

Ja.

Siehe dazu auch:

12.4. Für welche Zwecke ist der Referer zu gebrauchen?
http://www.php-faq.de/q/q-http-referer-nutzen.html

12.3. Warum ist es schlecht, mit dem Referer zu arbeiten?
http://www.php-faq.de/q/q-http-referer.html

Gruß,
Torsten