PHP-Skript darf nur aus einer Stelle angesteuert werden

Selbiges Funktioniert mit einer deklarierten Variable und isset().
PHP:
//datei1.php
$safety_key = 'abcdefg';
include 'datei2.php';

//datei2.php
if( isset($safety_key) && $safety_key == 'abcdefg' ){
}
Analog natürlich für Konstanten.

Lime: Am einfachsten ist es, wenn du dir auf deiner Seite ein eigenes Formular baust:
HTML:
<form method="POST" action="http://www.eineFremdeUrl.de/eineFremdeSeite.php">
<input type="submit" name="nameDesButtonsVonDerFremdenSeite" value="ValueDesFremdenButtons" />

Oder etwas "eleganter" per Extensions wie z.B. cUrl.

mMn kann man doch nur von eigenen Seiten (selber Server) per POST Daten übermitteln? Alles andere scheint mir doch äußerst unsicher.
 
Das macht stutzig. Ich habs probiert und zu meinem Erschrecken funktioniert es.
Ich arbeite ja grundsätzlich mit Sessions bei wichtigen Seiten, aber hätte nicht gedacht dass das funktioniert...
 
Ja hatte ich gelesen, allerdings find ich das ziemlich krass. Mir ist allerdings aufgefallen, dass man mit dem Google Chrome alleine auch schon viel kann. Zum Beispiel hidden-inputs kann man im Quellcode nicht sehen, wenn man allerdings "Element untersuchen" macht, sieht man sie und kann sie sogar ändern (values ändern). Daher muss ich jetzt bei allen Ajax-Skripten noch zusätzliche Sicherheitsabfragen einbauen.


Zum Thema nochmal:
Eine Möglichkeit wäre, auf SeiteA (Formular) eine Session einzuleiten und eine Variable zu speichern, die man dann auf SeiteB ausliest. Problematik ist halt, dass man auch ohne das Formular die Seite wechseln kann und die Session noch gültig ist...
 
Zum Thema: Zwei sichere Lösungen sind ja schon genannt worden. :)

Zu Hidden Fields: Niemals, nicht mal mit einer Knarre am Kopf auf deren Sicherheit verlassen, unsicherer geht es fast gar nicht mehr.
 
Ja hatte ich gelesen, allerdings find ich das ziemlich krass. Mir ist allerdings aufgefallen, dass man mit dem Google Chrome alleine auch schon viel kann. Zum Beispiel hidden-inputs kann man im Quellcode nicht sehen, wenn man allerdings "Element untersuchen" macht, sieht man sie und kann sie sogar ändern (values ändern). Daher muss ich jetzt bei allen Ajax-Skripten noch zusätzliche Sicherheitsabfragen einbauen.

Ich kann in Firefox sofort "hidden-Fields" auslesen. Also ohne Add-On´s. Einfach im Quelltext gucken.

Mit "Web Developer" kann ich ALLES mit einem Klick sehen.

Ohne Absichern, prüfen und validieren geht es einfach nicht.
 
Das ist kein Add-on von Google Chrome, sondern eigentlich eine Funktion zur erweiterten Untersuchung von Elementen... Im Quelltext stehen hidden-fields leider nicht drin, warum auch immer. Wird wohl was mit Sicherheit zu tun haben.

Aber stimmt, man sollte sich als Webdienst immer absichern, weil es gibt so oder so immer Möglichkeiten... ^^
 
Was mir gerade noch einfällt:
Wäre es nicht am einfachsten über das $_SERVER Array zuprüfen welche Datei eigentlich geladen werden sollte? Damit kann man sich auch die Definitionen der Konstanten sparen.
 
Beim Einbinden könnte man das ganz einfach so testen:
PHP:
if ( 'einbindendeDatei.php' == basename( $_SERVER['SCRIPT_NAME'] ) )
{
    // führe den Code aus
}
 
Zurück