Inhalte von superglobalen Variablen
xpfreund
- php
Hallo,
kann mir mal bitte einer erklären, was das fürn Sinn haben soll?
Also per Link übergebe ich gewisse Variablen, dabei auch eine Variable, die "datum ASC, anfang" als Inhalt hat. Wenn ich nun $_Get abfrage, wird das auch so angezeigt, wenn ich $_Request abfrage, bekomme ich das hier: "datumASCanfang" also den Get-Inhalt, nur ohne Komma und Leerzeichen. Warum das denn?
gruß aus Senftenberg am See
Moin!
Also per Link übergebe ich gewisse Variablen, dabei auch eine Variable, die "datum ASC, anfang" als Inhalt hat.
Der Inhalt dieser Variable wird danach aber nicht zufällig in eine SQL-Abfrage eingebaut?
Viele Grüße,
Robert
Hallo,
Moin!
Also per Link übergebe ich gewisse Variablen, dabei auch eine Variable, die "datum ASC, anfang" als Inhalt hat.
Der Inhalt dieser Variable wird danach aber nicht zufällig in eine SQL-Abfrage eingebaut?
Das schon, aber die wird vor Einbindung nochmal auf alle möglichen Sachen geprüft. Außerdem wird das ganze immer lokal laufen, wodurch eine Injektion schier unmöglich ist. Das Problem, was dahinter steckt ist ziemlich einfach. Eine Abfrage bekommt Standardwerte gesetzt, falls die Variable mit den aktuell benötigten Daten noch nicht existiert. Die neuen Daten kommen aus einer Form.
gruß aus Senftenberg am See
Moin!
Also per Link übergebe ich gewisse Variablen, dabei auch eine Variable, die "datum ASC, anfang" als Inhalt hat.
Der Inhalt dieser Variable wird danach aber nicht zufällig in eine SQL-Abfrage eingebaut?
Das schon, aber die wird vor Einbindung nochmal auf alle möglichen Sachen geprüft.
„Alle möglichen Sachen“, mit dieser Formulierung wäre ich vorsichtig ;-)
Außerdem wird das ganze immer lokal laufen, wodurch eine Injektion schier unmöglich ist.
Aha. Und wenn du doch irgendwann feststellst, dass der Code auch woanders verwendbar ist, steckt da eine schöne und leider vergessene Lücke drin. Ich empfehle immer von Anfang an sauber zu programmieren.
Viele Grüße,
Robert
Hallo,
Request
http://example.org/info.php?wert=datum%20ASC,%20anfang
ergibt
_REQUEST["wert"] datum ASC, anfang
_GET["wert"] datum ASC, anfang
Ich kann da keine Abweichung feststellen.
Hast Du vielleicht die URL-Codierung vergessen?
LG
Chris©
Hallo,
Hallo,
Request
http://example.org/info.php?wert=datum%20ASC,%20anfang
ergibt
_REQUEST["wert"] datum ASC, anfang
_GET["wert"] datum ASC, anfangIch kann da keine Abweichung feststellen.
Hast Du vielleicht die URL-Codierung vergessen?
Sieht so aus. Das wusste ich nicht, das sowas nötig ist.
gruß aus Senftenberg am See
Hallo,
Es geht auch ohne Urlcodierung. Ich habe eine Funktion namens qss entdeckt, bei der bestimmte Zeichen entfernt werden.
preg_replace("/[^0-9a-z_.]/i", "", $data);
$data war hier der request, der durch
$sort = $_REQUEST['sort'] = qss($_REQUEST['sort']);
entsprechend ersetzt wurde. Nach Entfernung dieser Funktion arbeitet das Ganze nun auch ohne Url_encoding. Die Funktion habe ich in dem Teil gefunden, wo xss-Angriffe bearbeitet werden. Hat qss auch seine Bedeutung. Wenn ja welche?
gruß aus Senftenberg am See
Hallo,
Es geht auch ohne Urlcodierung.
Deine Funktion reduziert aber den Informationsinhalt der URi. Es gibt keine gültige Umkehrfunktion dafür.
Ich halte das deshalb für Unsinn, da die Daten dadurch Inkonsistent werden.
Die URL-Kodierung hingegen ist umkehrbar und wird von PHP automatisch umgekehrt. In $_GET stehen nur die dekodierten Namen und Werte wieder drin.
LG
Chris©
Hallo,
Hallo,
Es geht auch ohne Urlcodierung.
Deine Funktion reduziert aber den Informationsinhalt der URi. Es gibt keine gültige Umkehrfunktion dafür.
Ich halte das deshalb für Unsinn, da die Daten dadurch Inkonsistent werden.
Die URL-Kodierung hingegen ist umkehrbar und wird von PHP automatisch umgekehrt. In $_GET stehen nur die dekodierten Namen und Werte wieder drin.
Ich muss dazu sagen, dass das aus dem Phprojekt kommt, welches ich nicht selbst programmiert habe. Aber warum codieren, wenns auch ohne geht?
gruß aus Senftenberg am See
Hello,
Aber warum codieren, wenns auch ohne geht?
<cite>"Also per Link übergebe ich gewisse Variablen, dabei auch eine Variable, die "datum ASC, anfang" als Inhalt hat."</cite>
Wenn es sich um Variablen handelt, die dort als Parameterwerte eingebaut werden, weiß man doch nie, was drinstehen könnte. Die müssen also dann URL-Kodoert werden. Dafür gibt es eine Funktion
http://de3.php.net/manual/en/function.urlencode.php
Diese an der passenden Stelle einzubauen, wird doch nicht so schwer sein?
Liebe Grüße
Tom vom Berg
Hi,
kann mir mal bitte einer erklären, was das fürn Sinn haben soll?
Ich kann gern eine Vermutung aeussern - und du schuldest mir ein Bier, wenn ich Recht habe, OK? :-)
Also per Link übergebe ich gewisse Variablen, dabei auch eine Variable, die "datum ASC, anfang" als Inhalt hat. Wenn ich nun $_Get abfrage, wird das auch so angezeigt, wenn ich $_Request abfrage, bekomme ich das hier: "datumASCanfang" also den Get-Inhalt, nur ohne Komma und Leerzeichen. Warum das denn?
Weil dieser letztere Wert so bereits in einem Cookie steht, und wegen variables_order = EGPCS dieser dir bei der Abfrage ueber $_REQUEST den Wert aus GET ueberschreibt.
Stimmt's?
MfG ChrisB
Hallo,
Hi,
kann mir mal bitte einer erklären, was das fürn Sinn haben soll?
Ich kann gern eine Vermutung aeussern - und du schuldest mir ein Bier, wenn ich Recht habe, OK? :-)
na klar
Also per Link übergebe ich gewisse Variablen, dabei auch eine Variable, die "datum ASC, anfang" als Inhalt hat. Wenn ich nun $_Get abfrage, wird das auch so angezeigt, wenn ich $_Request abfrage, bekomme ich das hier: "datumASCanfang" also den Get-Inhalt, nur ohne Komma und Leerzeichen. Warum das denn?
Weil dieser letztere Wert so bereits in einem Cookie steht, und wegen variables_order = EGPCS dieser dir bei der Abfrage ueber $_REQUEST den Wert aus GET ueberschreibt.
Stimmt's?
Nein, etwas weiter unten habe ich diese qss-Funktion vorgestellt, die sich den Request, der bekanntlich auch den Get-Wert enthält,vornimmt und entsprechend verändert, wieder in den Request zurückschreibt.
Du kannst aber trotzdem vorbei kommen, dann geb ich dir noch Bier aus, hab noch fast 3 Kästen zuhause.
gruß aus Senftenberg am See