Frage

Ich bin auf Anwendung arbeiten gebaut vor Jahren, dass aufgehört hat vor kurzem richtig funktioniert. Alte Programmierer, sagte, dass er $_GET oder $_POST könnten Variablen zugreifen, ohne sie aus $_GET[] array zu Lesen, sondern durch die register_globals

Ich mag fragen: (zum Beispiel direkte Wege) Was verschiedene Möglichkeiten, um Zugang $_GET Variablen sind ohne $_GET[] Array und, wenn bekannt ist, wie kann ich überprüfen, ob diese Anwendung jede von ihnen verwendet

?

Vielen Dank im Voraus

Bearbeiten : Die anderen Möglichkeiten, wie ich in Erinnerung waren register_globals, nicht magic_quotes. Auch ich möchte nicht auf es , sondern erkennen, ob es verwendet wurde, und in neueste Server-Update veraltet (was könnte erklären, warum app funktioniert nicht mehr richtig)

Bearbeiten : Mein Englisch ist schrecklich heute. Wie ich in einem der Antworten erklärt: Ich muss überprüfen, ob ursprüngliche Programmierer etwas dunkel und / oder veraltete Methode des Erhaltens Variablen aus Query-String zu PHP verwendet, so dass nun die Werte Anwendung funktioniert mit falsch sind / nicht initialisierten

WICHTIG EDIT : import_request_variables ist vom Tisch, wird es nicht verwendet wird. Alle $_ Arrays sind ab zu dem Tisch, weil letzte Änderung würde sie nicht bricht (=> sie noch Arbeit). Wie kann ich erkennen, welche Variablen mit register_globals initialisiert werden?

YET ANOTHER EDIT : Ich fand diese:

foreach ($_POST as $k => $v) {
  eval("\$".$k." = '".$v."';");
}
foreach ($_GET as $k => $v) {
  eval("\$".$k." = '".$v."';");
}

Könnte es von einer gebrochen wurde neuester Aktuelles (max. 1 Woche)?

War es hilfreich?

Lösung

Sie meinen durch Register Globals und nicht Magic Quotes ... BTW Register Globals ist das pure Böse nie verwenden sie (und sie werden als PHP veraltet 5.3.0)!

Edit: Wenn Sie, wenn die Anwendung Register Globals verwendet überprüfen möchten, versuchen, für $_GET Werte als Variablen suchen. Zum Beispiel für index.php?id=123 Versuch sucht $id im PHP-Code. Wenn Sie es finden, bedeutet dies nicht, dass das Skript Register Globals verwendet, aber wenn $id aus dem Nichts kommt und wird nie initialisiert / setted ist es eine gute (schlecht!) Zeichen, dass die App verwendet Register Globals ...

Andere Tipps

$_SERVER["QUERY_STRING"] gibt Ihnen den rohen GET-String.

Das heißt, das klingt wie ein Problem, das an seiner Wurzel festgelegt werden sollte, nicht durch eine andere Variable.

Wenn magic quotes ein Thema ist, hat einen Scheck, ob sie aktiviert sind, und befaßt sich mit den eingehenden Daten entsprechend.

Deaktivieren von Magic Quotes Seite im Handbuch zeigt PHP eine Art und Weise zu „reparieren“, je die eingehenden Daten, ob die Funktionalität aktiviert ist oder nicht. Es ist nicht sehr effizient für große Datenmengen, soll aber in einer alltäglichen Aufgabe tun.

Sie haben auch $ _REQUEST , import_request_variables , die ursprünglichen Codierer können habe es die Inhalte einer GET-Variable greifen und sie in eine andere Variable einzufügen, die dann anschließend das verwiesen wird.

Register Globals ist eine schreckliche Feature, dass ältere PHP-Programme oft verlassen.

Mit Registern Globals eingeschaltet, PHP wird die GET und POST-Variablen betrachten und „fördern“, um sie zu normalen Variablennamen - z. B. $_GET['myvar'] im Code als $myvar zugänglich sein würde

Unter anderem macht dies das Programm sehr einfach für Hacker einfach zu brechen, indem sie erraten, was andere Variablennamen der Programmierer verwendet haben. Das Register Globals Funktion wird daher standardmäßig für eine lange Zeit ausgeschaltet wurde, wird nun offiziell als veraltet und wird vollständig in einer zukünftigen Version entfernt werden.

Da die auf diese Weise verwendeten Variablen werden in einer Art und Weise Bezug genommen, die von normalen Variablen nicht zu unterscheiden ist, bedeutet dies, dass der Versuch, alten Code zu aktualisieren, dass Anwendungen registrieren Globals kann sehr schwierig sein. Es macht viel davon abhängen, wie gut geschrieben ist der Code.

Das Problem ist wahrscheinlich PHP register_globals . Diese Option macht $_GET['some_var'] oder gleichwertige $_POST Version als $some_var automatisch. Dies ist veraltet und Sie sollten auf jeden Fall nicht verwenden, aber die anderen Programmierer könnten sie in dieser Anmeldung verwendet haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top