![]() |
PHP-Dateien vor direktem Aufruf im Browser schützen.
Hallo,
ich rufe per JS/AJAX eine PHP-Datei auf, die man natürlich direkt im Browser aufrufen könnte. Kann man dies irgendwie halbwegs verhindern? Natürlich kann man den Aufruf nicht komplett unterbinden, doch ich dachte daran, dass die PHP-Datei evtl. den Referer auswerten könnte. Wenn dieser von der Seite oder der JS-Datei kommt, ist alles ok, sonst wird die PHP-Datei verlassen. Nur hat eine JS-Datei keinen Referer. Mal ein paar Hintergründe: Man kann bei mir per AJAX gewisse Operatoinen ausführen. Ist JS im Browser deaktiviert, dann zeige ich einen Link zu der vom JS ausgerufenen PHP-Datei mit diversen Parametern an. Nun möchte ich nicht, dass Bots (egal ob gut- oder bösartig) diesen Link aufrufen können. Grüße |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
0,26 Sekunden hätte Google gebraucht um dir eine passende Antwort zu liefern :)
Hier mal ein paar Links: ![]() ![]() ![]() Vielleicht hilft dir das Programm eAccelerator weiter. MFG Lars Wiltfang |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Das ist alles etwas komplett anderes als das, was ich suche.
|
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Tja Larsi, voll am Thema vorbei.
@Matze: ginge das nicht über eine Session? |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Zitat:
Du hast in deiner Frage wörtlich folgenden Satz geschrieben: Zitat:
|
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
@Detlef: Hm wenn der direkte PHP-Datei-Aufruf von der Website erfolgt ja, aber diese kann ja auch vom JS aufgerufen werden. Daher denke ich nicht, dass so etwas geht.
@Larsi: Dann kann aber JS auch nicht darauf zugreifen. Spamme bitte nicht mein schönes Thema voll. ;) Edit: ich hatte "Detlaf" geschrieben. |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Ein Bot könnte genauso gut eine Session starten.
Liese sich eventuell mit einer htaccess was anstellen? Ansonsten wäre noch eine Möglichkeit: Schreib Dir eine Klasse, die die gängigsten Bots erkennt und schreib dann in den PHP-Ajax-Dateien quasi sowas:
Code:
Übrigens: Du erkennst ja schon, ob JavaScript aktiviert ist und setzt je nach dem einen anderen Link da hin. Setze doch direkt da die Bot-Erkennungsfunktion ein: Wenn es ein Bot ist, mach aus dem Link einfach nur ein "#".
include('botrecognize.php');
if (isbot()) { die('No direct access for bots'); } |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Willst du verhindern, dass die Seite aufgerufen werden kann, oder nur verhindern, dass der Bot bei ausgeschaltetem JavaScript den Link sieht/verwenden kann?
|
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Er will das nur sein JS die Seite aufrufen kann
Man soll Sie zB. nicht selbst im Browser in die Adressleiste eingeben können |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Wenn ich in meinen Feuerfuchs "http://www.matzes-seite.org" eingebe, bin ich dann ein Bot? :mrgreen:
[edit] Manuel: :tongue: (mooning gibbet ja hier nich)[/edit] |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Was Du bist, weiß keiner so genau :mrgreen:
|
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Eine Bot-Erkennungsfunktion finde ich nicht schön, da ständig neue Bots hinzukommen. Außerdem kann man die Bots nur am User-Agent oder der IP erkennen. Die IP ändert sich ständig und der User-Agent kann vom Bot selbst definiert werden. Oftmals ist es ein gängiger Browser-User-Agent. Somit ist das alles andere als zuverlässig.
Per htaccess kann ich auch nur den Referer prüfen und das ist bei JS nicht möglich. @Martin: Genau. Wenn jemand den Link direkt von meiner Website aufruft oder wenn die JS-Datei dies tut, soll es funktionieren. Gibt man die URL direkt im Browser ein, sollte der Code in der PHP-Datei nicht ausgeführt werden. @Deddy: Ne, der User-Agent taucht sicher nicht in einer bekannten Bot-Liste auf. :P PS: Langsam nerven die ganzen roten Kästen, ich kann den Beitrag gar nicht absenden. *g* |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Ja, das war meine Frage, ob es um den Link geht, der von dem JS aufgerufen wird oder um den, den er hinschreibt wenn kein JS aktiviert ist.
Bei dem Link könnte ein Captcha helfen. Aber ich glaube nicht, dass es für die AJAX-Seite eine 100%ige Lösung gibt. Du könntest höchstens ein möglichst kompliziertes Anmeldesystem (ginge dann wieder in Richtung Session) erstellen, wobei auch das natürlich knackbar wäre. Ist halt die Frage wie viel es dir bzw. dem Angreifer Wert ist. |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Das "Problem" ist, dass auch nicht registrierte Besucher den Link nutzen dürfen. Sonst müsste ich ja nur die Session-Überprüfen.
Edit: Und eine Captcha kommt für mich nicht in Frage. Ziel ist es, die Benutzung so einfach zu halten, das ein einziger Link-Klick zum Ergebnis führt. |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Und wenn du für jeden Besucher auch eine Session erstellen würdest? Natürlich erst nach dem Lösen eines Captchas.
[edit]Ok, also wenn Captcha ausscheidet wirds schwierig[/edit] |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Quick & relativ dirty:
Übergebe bei einem Aufruf den Du selber startest und erlaubst einen 'geheimen' Parameter in der URL mit. Fehlt dieser, ist es ein ungültiger Aufruf. Bots raten nicht wild irgendwelche Parameter. Diese hast Du damit zuverlässig ausgesperrt. Ein menschlicher Benutzer könnte das zwar, müsste dann aber auch erst den korrekten Wert des Parameters erraten. |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Zitat:
Greetz alcaeus |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
@Phoenix: Hm wie meinst du das genau?
bei Betreten der Seite speichere ich einen Zufalls-String in der Session, prüfe auf diesen und nach dem Aufruf des Skripts lösche ich ihn wieder aus der Session und erzeuge ggf. einen neuen? Das würde den direkten Aufruf vermutlich verhindern, stimmt. Ich überlege nur grad, wo dort der Haken ist. :gruebel: :mrgreen: @Andy+Phoenix: Ginge das auch über das $_SESSION-Array? @Andy: Gut, du hast mir schon die meisten Antworten auf die Fragen gegeben. ;) |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
IMO ist der Haken, dass ich das ganze immer noch automatisiert durchführen kann:
Seite aufrufen, ID abholen, AJAX-Seite mit ID aufrufen... Wirklich was gewonnen hast du dadurch nicht, außer, dass noch mehr Traffic erzeugt wird. |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Das stimmt natürlich, aber ob das Bots machen, hm.
Edit: Vielleicht ab heute, weil ihr den "Trick" verraten habt. *g* |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Evtl hilft auch das hier:
![]() |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Ne, das bringt mir nichts, denn Bots finden diese links dennoch.
|
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Es geht nicht, was du willst.
Fakten: AJAX ist nichts anderes als eine Browseraufruf. Deine Routinen müssen das Ziel kennen. Dadurch muss das Ziel auch zum Client übertragen werden. Alles was der Client hat, sieht und übertragen bekommt kann man sich anzeigen. Im Zweifelsfall über Wireshark. Schutzmechanismen kannst du aushebeln (sehr einfach sogar). z.B. Browserstring verändern oder mit GreaceMoneky Hier diese Spiel z.B. versucht das auch. Leider erkennen die auch den Firefox als Hack: ![]() |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Dass es nicht sicher funktioniert, weiß ich. Doch man kann versuchen, es Bots schwer zu machen und das könnte mit diesem Zufalls-String klappen.
Das ist genauso wie mit Crack-Schutz-Mechanismen bei Software. ;) |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Zitat:
Zu verhindern gilt der zweite Schritt, d.h. das "unbeabsichtigte" Aufrufen von bar.php (z.B. weil der Link in Google indiziert wurde und als Suchergebnis angezeigt wird). Das liesse sich mit einem OTP leicht loesen, schliesslich ist das in der Ergebnis-URL gespeicherte Passwort nicht mehr gueltig ;) Man muss an dieser Stelle aber auch sagen, dass das AJAX-Script (in diesem Fall bar.php) alle Kontrollen machen muss, d.h. ist der User eingeloggt? Darf er die Aktion ueberhaupt vornehmen? Sind die Parameter gueltig? Alles andere waere grob fahrlaessig, wenn nicht sogar dumm. Greetz alcaeus |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Hallo,
ich habe vor einiger zeit sowas ähnliches gebraucht und zwar sollten zip / rar datein nur von einem PHP script aufgerufen (und ausgeliefert) werden. .htaccess
Code:
evtl. funktioniert das ja für dich. erklärungen zu den einzelnen kommandos gibts auf der apache seite in der doku
Options +FollowSymlinks -MultiViews -Indexes
CheckSpelling Off RewriteEngine on RewriteBase / RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.de/(.*)\.php$ [NC] RewriteRule (.*)\.(RAR|ZIP)$ - [F] |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
@Andy: Die Gültigkeit überprüfe ich selbstverständlich in der PHP-Datei.
@Kalfany: Das funktioniert in meinem Fall leider nicht, dass der direkte Aufruf über das JS möglich sein sollte. |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
![]()
Code:
Somit wäre das Script mir namen "skript.php" nur über die Seite selbst aufrufbar.
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://www.meine-domain.de/.*$ [NC] RewriteRule ^skript.php$ [F] # optional für Dateiendungen RewriteRule .(jpe?g|gif|bmp|png)$ - [F] Leider dürfte dann der Zugriff per Ajax nicht mehr nöglich sein. Dafür hätte ich folgende Lösung. Dafür braucht man dann noch ein Ersatzscript das das eigentliche Script aufruft. Das Ajax-Script ruft vorher ein php-script auf, das z.B. die IP und anderes speichert. Beim Aufruf ddes "Ersatzscripts" wird geprüft ob es für diese IP einen Eintrag gibt, läuft durch und löscht den Eintrag wieder. Am bsten per Timestamp nen ablaufdatum einbauen. Das die beiden scripte ja direkt nacheinander ausgeführt werden reicht ja ne gültigkeit im Sekundenbereich. Gruß tr909 |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Danke für deinen Vorschlag. Dann würde ich jedoch den Bots das Ersatzskript präsentieren und wäre da, wo ich vorhin auch war. ;)
Ich denke, ich teste gegen später die Lösung mit dem Zufalls-String. Grüße |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Code:
Wenn du Daten mit POST an den Server schickst, werden diese Daten von Bots ignoriert.
<FORM METHOD="POST">
</FORM> Und die Bots, die das nicht ignorieren, sind darauf ausgelegt nicht erkannt zu werden (Spam Bots). |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Also ich hab das mal so gemacht um Bots zu ärgern.
Ich habe mehrer Params gehabt und sobald einer fehlt kommt ein 404 Error |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Referer werden von manchen Personal Firewalls geblockt.
|
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Zitat:
|
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Du könntest den Link auf der Clientseite durch Java Script erzeugen lassen.
Bots führen kein Java Script aus und können daher dem Link nicht folgen. ![]() |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Hallo,
mir geht es darum, dass die Seite auch mit deaktiviertem JavaScript bedienbar ist. Da Google mittlerweile ![]() Aber ich habe noch eine Frage zu diesem Zufallsstring: Der Zufallsstring wird erzeugt und an die URL angehängt oder im $_SESSION-Array übertragen. Wobei mir letzteres lieber ist, da man so nur eine einzige URL hat. Wer Cookies deaktiviert hat ist selber Schuld. Den Zufallsstring muss ich aber ja irgendwie vergleichen können. D.h. ich muss diesen in der Datenbank speichern oder wie? Und wenn der String nur eine begrenzte Gültigkeit hat, müsste eine Tabelle so ungefähr aussehen, oder? string | expires_on Nur muss ich den String ja auch noch den Benutzern zuordnen können, also benötige ich pro Besucher einen Zufallsstring. :gruebel: Könnte mir da bitte jemand das Vorgehen erklären? Im Internet konnte ich hierzu leider nichts finden, was mir weiterhilft. Grüße, Matze |
Re: PHP-Dateien vor direktem Aufruf im Browser schützen.
Zitat:
Ich erstelle einen 404 Header und gut ist da ist nix Referer. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz