PHP-Skript darf nur aus einer Stelle angesteuert werden

PHP:
if(isset($_POST['submitbutton']))
{
     //dein Code hier
} else {
     echo "Du hast hier nichts zu suchen!";
}

Dürfte die wohl banalste, aber auch einfachste Lösung sein. ;)
 
Aber die sicherste Möglichkeit ist doch diese hier oder?

PHP:
   if(!defined('MEIN_SUPER_SKRIPT'))
   {
      exit("Zugriff verweigert");
   }

Denn wenn "MEIN_SUPER_SKRIPT" nicht definiert ist, kann niemand die Datei ausführen. Der Schlüssel liegt nähmlich IN EINER EINZIGEN PHP-Datei.

Oder kann man "definded" umgehen?
 
Der Lösungen mit isset($_POST['...']) ist zwar sehr simpel, aber sehr schnell zu umgehen.
Eine konstante in der Elterndatei zu definieren und in der inkludierten Datei zu prüfen ob diese gesetzt ist (funktioniert auch mit einer einfachen Variablen), ist meiner Meinung nach nicht austricksbar.
Allerdings kann das uU mehr Aufwand bedeuteten, wenn du die Datei öfter inkludieren möchtest.
 
Naja timestamp, einerseits ist das leicht zu umgehen - ich wüsste zwar nicht wie, aber ich glaube deiner Aussage einfach mal -, andererseits soll ja nur verhindert werden, dass nicht der Code ausgeführt wird, falls jemand auf die Seite stößt. Praktisch gesehen ist es ja nur ein Schutz vor sinnloser Codeausführung. Ich glaube kaum, dass bei einem Ava-Generator jemand Interesse hat, die Sperre zu knacken...
 
Ja das mit dem Mehraufwand stimmt natürlich aber Sicherheit steht bei mir ganz oben.

define und defined sind wirklich eine sehr gute Erfindung (Türschlüssel und Türschloss).

http://php.net/manual/de/function.define.php
http://php.net/manual/de/function.defined.php

Naja timestamp, einerseits ist das leicht zu umgehen - ich wüsste zwar nicht wie, aber ich glaube deiner Aussage einfach mal -, andererseits soll ja nur verhindert werden, dass nicht der Code ausgeführt wird, falls jemand auf die Seite stößt. Praktisch gesehen ist es ja nur ein Schutz vor sinnloser Codeausführung. Ich glaube kaum, dass bei einem Ava-Generator jemand Interesse hat, die Sperre zu knacken...

Da kann ich dir aber etwas anderes Berichten.

Ich habe aktuell meinen alten Ava-Generator am laufen (von 2009!) und der neue ist seit ca. 1 1/2 Jahren in Entwicklung. Im neune Ava-Generator habe ich einen eigenen Validator eingebaut. Der kontrolliert ob z.B. Werte verändert wurden.

Jedenfalls hatte ich diesen Validator ca. 4 Wochen lang in meinem alten Ava-Generator am laufen. Wenn eine Veränderung festgestellt wurde, wurde diese inkl. IP-Adresse usw. in der Datenbank gespeichert.

Fazit nach ca. 4 Wochen: über 100 Manipulationsversuche (nicht von Bots)!
 
Zuletzt bearbeitet:
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.
 
PHP:
   if (isset($safety_key) && $safety_key == 'abcdefg')
   {
       echo 'Zutritt gewährt!';
   }
       else  
   {
       exit('Zutritt verweigert!');
   }

Sehe ich es falsch oder würde das einen Fehler provozieren wenn es die Variable "$safety_key" gar nicht in "datei2.php" gibt?
 
Zuletzt bearbeitet:
Nein, denn die UND (&&) Verknüpfung arbeitet von links nach rechts. Sobald das erste false kommt, wird abgebrochen. Wenn $safety_key nicht gesetzt ist, liefer isset() false und der nachfolgende Teil wird nicht mehr ausgeführt/geprüft.
Bei OR (||) ist es übrigens genau andersrum. Es läuft auch von links nach rechts, aber es wird nach dem ersten TRUE aufgehört weiter zu prüfen.


Dein Script hat dennoch einen Fehler, statt Zutritt verweigert sollte dort Zutritt gewährt stehen ;)
 
Seit wann geht es denn hier um eine eingebundene Datei?

Die Ausgangssituation war, dass es eine .html Datei mit Formular gibt welche beim Absenden auf eine .php Datei zeigt. Und da nützt eure Konstante/Variable gar nichts.

Und, dass die beiden, von mir, vorgestellten Möglichkeiten nicht zu 100% sicher sind sagte ich ja. Wären mMn von der Ausgangssituation auch erstmal die beiden einzigen Möglichkeiten die mir einfallen.

Gruß
 
Zurück