Schutz scripten

Malaxo

Erfahrenes Mitglied
Hallo Hallo:D

Mein selbst gemachtes GB erfüllt prima seinen Zweck. Bin zufrieden damit.

Seit neustem wird gespamt... Zuerst mit Text danach mit Links und scheinbar nach meine Update wieder mit Text wie z.b. "asia4you" oder so:D

1. Ich habe ein IP Spam Schutz von einer gewissen Zeit
2. Alle Felder müssen ausgefüllt sein
3. E-mail addresse muss zeichen@zeichen.zeichen sein
4. In der Textarea werden "[", "url", "www.", "http" nicht erlaubt bzw. man kann keine Einträge machen.
5. Sobald ein Strip_Tag kommt wird das auch nicht funktionieren.

Also von Links bin ich also befreit:D die meisten Bots wollten ja auf Sex-links "hinweisen"

Hab mich hier schon manchmal durch gelesen zu diesem Thema.
Jetzt will ich den User der mir was ins GB schreibt nicht unnötig mit Captcha oder dem gleichen aufhalten, weil auch mich das nerven würde und ich danach den Eintrag sein lassen würde........

Hab mir aber ein paar Tipps geholt.

Nummer 1:

Checke ob das Formular überhaupt aufgerufen wurde, oder ob der POST-Request gleich kam. Die meisten Spambots gucken sich gar nicht das Formular an, sondern posten sofort, ohne Formular. Das geht recht einfach, indem du einfach eine Art Hidden-Key mit ins Formular einfügst der auf jeden Fall beim Übertragen dann verfügbar sein muss. Da der Spambot sich das Formular nicht anguckt, wird er dieses Feld eben auch nicht übertragen.

Nummer 2:

WENN das Formular vorher aufgerufen wurde, dann checke ob zwischen dem Aufrufen und dem Post mehr als 5 Sekunden vergangen sind. Hilft auch wunderbar, da die Bots recht schnell posten, ein Mensch dafür aber länger braucht.

Nummer 3:

Ein zusätzliches Textfeld das versteckt ist und einen Namen hat der gebräuchlich ist für so was wie z.b. "name" :D dieser ist leer, somit auch nicht ausfüll bar von einem Menschen da man ihn nicht sehen kann. Also wird geprüft ob der am Ende, wenn das Formular übergeben wird immernoch leer ist. Flas NEIN war es bestimmt ein Bot fals JA ist die wahrscheinlichkeit das es ein Bot war schon mal ein bischen geschrumpft.

Nun die Frage: ;-]

Wie Scripte ich in PHP Nummer 1+2 ?
 
zu 1. :

Formular:
HTML:
<input type="hidden" name="antiSpam" value="1">

Auswertung

PHP:
if($_POST['antiSpam'] == 1){
  ...Formulardaten kommen aus Formular, weiter gehts
} else { 
  ... Formulardaten kommen nicht aus dem Formular
}


zu 2:

Formular:
HTML:
<input type="hidden" name="inputTimeStart" value="<?php echo $time() ?>">

Auswertung:
PHP:
if(time()-5 >= $_POST['inputTimeStart']){
 ... Formular in min 5 Sekunden ausgefüllt
} else {
 ... Formular in weniger als 5 Sekunden ausgefüllt
}

obwohl eins von beiden reichen wird, 1. find ich persönlich besser
 
Zuletzt bearbeitet:
Also @soyo...

Das würde heissen meine Form mit

HTML:
<input type="hidden" name="antiSpam" value="1">

erweitern und danach beim Absenden zusätzlich die prüfung machen ob antiSpam auf 1 gesetz wurde oder sonst einem Wert den ich vorgebe?

So einfach

Aber der input antiSpam ist ja dann immer schon auf 1 gesetzt somit wäre doch sowiso immer die If abfrage erfüllt oder nicht? Ich hatte das so verstanden das dieser Wert erst gefüllt werden muss wenn das Formular tatsächlich aufgerufen wird. Bitte um erklärung:D

Code verstehe ich aber logik nicht so ganz. Wird doch vom Bot auch übernommen diesen Wert oder nicht
 
Ein Spambot würde sofort in die Auswertung gehen und dort über POST-Variablen sich in das Gästebuch eintragen. Da die Auswertung die Daten (POST-Variablen) aus dem Formular bekommt(was der Bot überspringt) kann $_POST['antiSpam'] gar nicht auf 1 stehn, denn die Variable ist erst gar nicht initalisiert. Es wäre trozdem ratsam ein anderen Namen für das verseckte Feld zu nehmen und einen anderen Wert.

Falls es jemand auf dein Gästebuch abgesehn hatt, kann man auch den Wert aus dem verstecktem Feld, variable machen. Aber die normale Variante sollte erstmal genügen.
 
Hallo,

Irgendjemand_1 hat gesagt.:
1. $_SERVER['HTTP_REFERER'] - Auf http://de.php.net/manual/de/reserved.variables.php nachschauen ;)

2. Speichere beim Aufrufen der 1. Seite einen Timestamp und vergleiche ihn mit dem, wenn er das Gästebuch aufruft (time()).
Allerdings denke ich, dass man 2. weglassen könnte, 1. müsste reichen ;)
Zu 1.: Das Referrer-Feld kann vom Client mit einem beliebigen Wert besetzt werden. Das hält einen Spambot sicher nicht ab.

Grüße,
Matthias
 
soyo hat gesagt.:
Ein Spambot würde sofort in die Auswertung gehen und dort über POST-Variablen sich in das Gästebuch eintragen. Da die Auswertung die Daten (POST-Variablen) aus dem Formular bekommt(was der Bot überspringt) kann $_POST['antiSpam'] gar nicht auf 1 stehn, denn die Variable ist erst gar nicht initalisiert.
Woher sollte denn ein Spambot den URL des verarbeitenden Skriptes oder die Namen der Argumente herbekommen wenn nicht aus dem Formular? Sollen sie diese Informationen etwa erraten?
Auch der HTTP-Referrer ist kein verlässlicher Wert, da er entweder wie bereits erwähnt einfach gefälscht werden kann oder von manchen Browsern aus Datenschutzgründen auch erst gar nicht gesendet wird.

Punkt zwei finde ich einfach nur sinnlos. Aber wenn du dich damit sicherer fühlst.
 
Ne ich wollte nur mal anfragen, mehr nicht.

Gumo was empfiehlst du den noch so einzubauen? Klar ohne Captcha oder der gleichen, ist man nie geschützt vor Bots (selbst dann nicht). Jedoch verringert es die möglichkeit.

Ich seh das so: 0% ohne jeglichen Schutz...

Und mit jedem noch so kleinen Schutz wird die Möglichkeit vergrössert.

z.b. funtionieren Links nicht... wie viele Bots fallen da schon mal weg?=) die meisten wollen Links spamen... evt. einen Schutz von 10% oder mehr.... Klar der freundliche User, kann so auch keine Links mehr Posten, jedoch muss er das ja auch nicht;) und fals doch hat er die möglichkeit seinen Eintrag zu editieren...

Mit so kleinen Schutzscripts wird die möglichkeit immer kleiner gehalten oder etwa nicht? Zudem sollen diese Scripts für den freundlichen User nicht störbar / sichtbar sein:D


btw: der 1. Bot der auf mein GB aus war, war einer der die Daten einfach gesendet hat... da ich den Link aus der Page empfernt habe (und kein GB mehr sichtbar war für den User ergo BOT) diesen bin ich nun los da dieser mit Links kam. Jetzt ist einer drin der irgend wie keinen Sinn ergibt und zwar Postet er solche sachen auf English:

"Very nice site thx"
"Wow this page is cool"
etc. etc. evt. pro Tag 1-2...

Der war nach dem Update auf PHP5 nicht mehr tätig jetzt kommt er wieder. Ich denke es ist daher ein Bot weil, wenn man nach den Einträgen in Google sucht findet man viele andere Gästebücher die auch solche einträge haben.

Also egal was für Tipps ihr habt und seien sie noch so doof einfach mal Posten, denke mir andere User wären auch um so was sehr froh:D

Eine riesen Sammlung von SpamSchutzScripts
Thema: :nospam:
 
@ Gumbo : Ich weiss natürlich nicht genau wie so ein Bot funtkioniert, aber ich denke das immer noch jemand dahinter sitzt und sich die Gästebücher per hand raussucht und die URL aus dem Quelltext in irgend eine DB einträgt, die der Bot dann abarbeitet. Vielleicht lieg ich auch falsch, aber so änhlich würde ich es machen wenn ich solch ein Bot schreiben würde wollen :D
 
Zurück