Fireplace

PHP Bots Zugriff auf Datei verwehren!

@Eagle, @Belee: Dateien die gar nicht ausführbar sein sollen gehören nicht in den Webroot, sondern in Verzeichnisse, die aus dem Web nicht aufrufbar sind, oder in welche die komplett durch "Deny all" per htaccess oder ähnlichem gesperrt sind. Dann gibt es auch keine Probleme damit.

@Belee: Dass ComputerBase /forum/search.php gegen Bots sperrt ist sehr spitzfindig. Damit sind nur seriöse Bots gesperrt, eben so wie es hier im Thread schon mehrfach angesprochen wurde. Unseriöse Bots sind von regulären Benutzer NICHT zu unterscheiden sofern die Webseitenaufrufe zustandslos ablaufen! Und die halten sich weder an robots.txt, noch daran einen bestimmten User Agent zu senden. Denn dieser lässt sich absolut beliebig wählen und auch fälschen! Wenn im User Agent "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" drin steht, dann heißt das noch lange nicht dass es auch Internet Explorer 7 ist. Es könnte genauso gut ein Bot sein, der sich als IE7 ausgibt.

Außerdem wenn du einen Counter über die index.php oder einen anderen Entrypoint includest (php include/require), dann ist robots.txt sowieso witzlos, weil damit nur index.php erfasst wird! In diesem Fall musst du dich auf die User Agent Aussage des Clients verlassen, womit unseriöse Bots aber trotzdem als Unique Visitor gezählt werden.
Eine Blacklist für Bots ist ziemlich sinnlos, weil es ständig neue gibt und du sie niemals wirklich alle erfassen kannst. Kannst dir ja mal die mehr oder weniger vollständige Liste von AWStats ansehen: klick

Sinnvoller ist es die regulären Zugriffe durch Cookies zu erkennen. Normale Bots akzeptieren nämlich keine. D.h. man setzt bei jedem Aufruf einen bestimmten Cookie. Der Counter wird nur dann aufgerufen, wenn der Cookie vom Browser zurückgemeldet wird, d.h. es wird zu Beginn erst der zweite Seitenaufruf für den Counter verwendet. Damit werden normale Bots einfach ignoriert - ohne Listen.
 
IceMatrix schrieb:
@Eagle, @Belee: Dateien die gar nicht ausführbar sein sollen gehören nicht in den Webroot, sondern in Verzeichnisse, die aus dem Web nicht aufrufbar sind

Das weiß ich, da ist aktuelle nur meine DB-Config Datei drin. Verstehe aber den Sinn nicht warum man *.inc Dateien auch ausserhalb des Roots verschieben sollte? die werden ja includiert nun spielt es ja auch keine Rolle ob sie INC oder sonst wie heißen.

Wenn ein Bot einer Seite folgt die so eine INC auch includiert, dann hat der Bot trotzdem den Inhalt bzw. Zugriff darauf oder siehst du das anders?. Also kann man das eigentlich nur sicher schützen indem man die Bots kennt und diese dann filtert, also das wenn ein Bot erkannt wird diese INC eben nicht includiert wird. Wie sonst willst du das machen? garnicht?

Man kann aber sehr wohl diese getarnten Bots erkennen, das Shema "zumindest bei mir" ist immer das selbe. Die wechseln zwar fast nonstop die IP doch ist der IP-Bereich immer der gleiche, Ostküste USA. Die kommen auch nie alleine, meistens mit 2-3 Spidern und crawlen immer nur einen bestimmten Bereich der Seite. Tarnen sich mal als FF und mal als Safari. Man erkennt diese wenn man die eigene LOG längere Zeit studiert, sicher, alle wird man nie filtern können doch einen Großteil schon.
Und warum soll ich nicht von 70 Bots die aktuelle meine Seite crawlen, 60 davon abhalten einige bestimmte Dateien nicht zu crawlen?
 
IceMatrix hat den Grund doch schon geschrieben, wenn du die zu inkludierenden Dateien außerhalb des Web-Roots ablegst, dann sind sie für die Bots gar nicht mehr erreichbar. Da musst du dann nix filtern und hast einen 100% Schutz. Die Skripte in einem Web-Root können natürlich trotzdem drauf zugreifen.

Was ist denn jetzt dein Plan? IP-Adressbereiche der US Ostküste sperren? Also bevor ich sowas mache würde ich lieber die Bots in Kauf nehmen, sorry.

edit: Achso, jetzt weiß ich was du meintest. Ja, wenn deine index.php oder was auch immer die Dateien außerhalb des Webroots inkludiert, dann hat der Bot indirekt trotzdem Zugriff darauf. Ich weiß aber nicht, ob du da falsche, gefühlte Sicherheit erzeugen möchtest. Du kannst nun mal keinen Bot der Welt davon abhalten, Teile deiner Website zu sehen, wenn diese für die Öffentlichkeit zugänglich ist. Da bringt der Useragent null und IP-Adressbereiche zu sperren ist verdammt unsauber. Erstens sperrst du dir garantiert normale User damit aus, andererseits frage ich mich, wie du überhaupt an diese IP-Adressbereiche kommen willst (wenn sich der Bot als Firefox ausgibt könnte es ja auch nur ein normaler User sein).
 
Zuletzt bearbeitet:
Gut das du verstanden hast was ich meine. Also erreiche ICH mit Dateien ausserhalb des Roots nichts.

Das ich keinen Bot davon abhalten kann einige Dateien zu sehen ist aber nicht ganz richtig. Wenn ich direkt in eine php Datei einen Bot filtere, wie kann er dann den eigentlichen Inhalt dieser Datei lesen? bzw. er sieht die Datei aber nicht den Inhalt richtig? und darum geht es mir, er kann die Datei ruhig sehen nur den Inhalt nicht, und das kann man halt nur durch die Methode OBEN erster Post erreichen.

Das Problem sind aber die getarnten Bots, das sehe ich ein und ist Mist. Also bleibt nur eine Option, diese Datei(en) nur für z.B. registrierte User zugänglich machen.
 
@IceMatrix
Ich sagte doch Komplett-Sperre über .htaccess. Du wiederholst mich :) Und ja,
"Order deny,allow
Deny from all" ist der Befehl dafür...?
 
Die ist dann aber für alle gesperrt - auf für normale User, das kenn ich und das brauche ich nicht :)

Lassen wir es, so wie oben im ersten Post funktioniert es jetzt nach paar Tagen Test sehr gut, Google zeigt mir in Webmastertools das es einen 403 erhalten hat und die Datei ist nicht indexiert. Also funktioniert es bei bis jetzt von mir 47 eingetragenen Bots :) und sobald neue erscheinen landen die auch in die Liste, wo ist also das Problem? es gibt keins, also keine Aufregunge bitte :)
Und die paar getarnten Bots? na mein Gott, ihr sagt ja selbst, man kann nicht alles filtern, dann kann man eben nicht, die wichtigen aber kann man und das reicht mir erst einmal.
 
Eigentlich ist das Thema erledigt. Aber seit dem ich eine neue Version meiner Firewall nutze, merke ich dass Bots mit stündlich auf meinen lokalen Notebook zugreifen wollen...
Ist das 'normal' bzw. bei euch auch so? Denke liegt am offenen Port 80 und meiner DynDNS.
 

Anhänge

  • bots.png
    bots.png
    160,4 KB · Aufrufe: 145

Ähnliche Themen

Zurück
Oben