Wie unterbinde ich einen direkten Aufruf der Skripte?

philomatique

Grünschnabel
Hallo Leute,

ich benutze Prototype als AJAX-Framework und frage mich schon eine Weile:

Wenn ich beispielsweise einen AJAX-Updater starte, übergebe ich ihm ja die Adresse eines Skriptes, dass ausgeführt werden soll. Nun könnte ich ja dieses Skript direkt über die Adresszeile auch aufrufen, was ich aber unbedingt verhindern möchte.Wie kann ich das umgehen?

Ich hab mir überlegt, das Verzeichnis mit einer htaccess und "deny from all" zu sichern, aber dann kann die Datei ja nicht mehr aufgerufen werden - im Gegenstza zu "include" in PHP. Oder liege ich da falsch?

Habt Ihr eine Idee?

Danke und Grüße
Phil
 
Interessante Frage, ich hab so ein ähnliches Problem mit Flash, was ja aufs selbe rauskommt.
Ich glaube nicht, dass es einen gescheiten Lösungsansatz gibt. Eventuell ein wenig mit Verschlüsselung oder so arbeiten. Ist halt nichts was einen Benutzer aufhält, der grad zu viel Zeit hat.
Ansonsten in dein Script einfach ne Zeitsperre einbinden, dass es nur soundsooft gestartet wird. Oder einige eifache Abfragen, die überprüfen ob der Benutzer das Script schon gestartet hatte. Dann könnte man das Script sofort beenden.

Marius
 
Hallo Marius,

danke für deine schnelle Antwort. Im Endeffekt, hab ich allerdings immer noch das Problem, dass er sich einfach die Datei einzeln laden kann. Mir gehts da auch um Sicherheit, dass ich nicht in jeder Datei einzeln schauen muss, ob der Nutzer beispielsweise eingeloggt ist und sich jemand Datenbankanfragen einfach so holt... Vielleicht hat ja jemand noch eine Idee. :-)

Mal noch was anderes. Wie kann ich Daten per POST senden ohne eine Formular zu benutzen? Geht das auch irgendwie? Also bei GET kann ich es einfach in die Adressleite schreiben. Gibt's so eine Möglichkeit auch für POST?

Danke und viele Grüße
Phil
 
Wenn du mit php über Sessions gehst und die Session-Id mitübergibst und dann im Skript überprüfst hast du zumindest ein wenig mehr "Sicherheit".
 
danke für die idee - das wäre ein anfang.

kann man nicht irgendwie prüfen WIE die datei aufgerufen wurde? also ob es über den ajax-request kam oder ein direkter aufruf des scripts war?

viele grüße
phil
 
Was dir gegen die einige Benutzer natürlich auch keine 100%ige Sicherheit bietet, die ändern den Referer dann halt mit der geeigneten Browsererweiterung.
POST Ohne Formular würde am geschicktesten mit nem unsichtbaren Formular und einigen "hidden"-Inputs gehen.
Du meintest, du magst nicht in jeder Datei alles prüfen müssen. Wenn dir das von hand zu viel Arbeit macht, zb per Include deine Prüfdatei einbinden.
Mit den genannten Sessions könntest zb ne Variable definieren: $_SESSION['step'] = 1;
Die erhöhst du dann bei jeder nachfolgenden Seite und überprüfst sie vor nem Seitenaufruf, wie groß sie ist. Wenn sie zu klein ist, hat ein Benutzer Schritte ausgelassen.
Aber auch hier: nicht mal das bringt dir Sicherheit. Wenns um die Serverlast geht, vielleicht mit nem Timelimit arbeiten.

Marius
 
danke für eure antworten. das mit dem HTTPREFERER werd ich mal testen - klar gibt es keine hundertprozentige absicherung, aber ich möchte es wenigstens so umständlich wie möglich machen. :-)

mit dem versteckten fomular ist schon klar. mir ging es eher darum ob man die daten auch andersweitig schicken kann - z.b. indem ich irgendein shellskript ausführe, dass die seite ruft und die daten übergibt. also, als ob ich http://www.bla.de/parameter aufrufe für GET nur eben irgendwie was anderes mache, um das nachzuahmen. ich weiß nicht wie ich es besser erklären soll. :)

die step-geschichte ist auch ne nette idee. :-)

danke. :-) und gute nacht
phil
 

Neue Beiträge

Zurück