PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Image load Aufruf verstecken bzw. nicht anzeigen



Jor
31-03-2008, 14:06
Hallo *.*,

ich möchte das folgender Methodenaufruf im Quellcode nicht angezeigt wird, bzw. ein externer Aufruf der Seite nicht funktioniert:
<img src='getdata.php?id=120'>

Folgender Hintergrund ist gegeben; Aus einer Datenbank wird ein Image geladen und mittels des o. g. Aufrufs angezeigt. Soweit so gut, aber man kann die Seite auch seperat aufrufen und mit dem übergebenen Parameter wird das Bild angezeigt. Das möchte ich aus mehreren Gründen verhindern.
Selbst verständlich kann ich über die Session abfragen, ob der Benutzer angemeldet ist, dieses ist mir aber nicht restriktiv genug, da auch ein angemeldeter User den URL nicht aufrufen sollen darf.
Einige Sachen habe ich schon durch probiert, aber noch kein richtigen Ansatz gefunden. Hat jemand eine Idee...?

BLUESCREEN3D
01-04-2008, 17:13
Leg eine neue SQL-Tabelle mit Keys an.
Bei jedem Aufruf der Seite, die die Bilder enthält, wird für jedes Bild ein Key generiert, in die Tabelle eingetragen und an die URI von getdata.php gehängt.
getdata.php selbst versucht beim Aufruf, den Key wieder zu löschen. Falls das erfolgreich war (affected_rows != 0), war der Key gültig und das Bild wird angezeigt.

Trotzdem gilt: Was der User auf der Website sehen kann, kann er auch speichern - im Zweifelsfall per Screenshot.
Außerdem verhindert so eine Technik auch das Caching, d.h. du hast mglw. wesentlich mehr Traffic.

Und wenn du schon so einen Zugriffsschutz brauchst, dann mach das wenigstens benutzerfreundlich: Wenn jemand die URI zu dem Bild weitergibt, der Key also nicht mehr gültig ist, könnte der Besucher z.B. zu der Seite weitergeleitet werden, die das Bild enthält.

Jor
02-04-2008, 19:12
Hi BLUESCREEN3D,

yep, das ist eine Lösung! Ich danke dir für den Vorschlag, leuchtet ein und ist nicht zu mächtig in der Umsetzung. :)
Generell hast du recht! Ich sehe es ein, für mich war es aber wichtig, wie ich es hinbekommen kann. Ich werde es umsetzen, ob es dann auf die Page kommt werde ich noch abwarten (dank deiner Anmerkungen ;) ).

Danke nochmals :)