Antworten auf deine Fragen:
Neues Thema erstellen

Wie sicher ist GET ?

Dimitrj

Nicht mehr ganz neu hier

Hi Leute

Ich bin grad etwas überfordert mit PHP-Sicherheit.
Hab schon zu viel davon gelesen und gesucht und sehe/finde den Wald vor lauter Bäume nicht - möchte aber trotzdem ganz sicher sein.

Darum die Frage:

Wenn ich GET ungeprüft in einer if-Abfrage verwende, könnte man ja Fremdcode einschleusen. (?)
Also muss ich das z.B. durch
PHP:
 if (htmlspecialchars($_GET['srt'])!=1)
verhindern. (?)

Danke im Vorausfür die Hilfe

Dimitrj
 

MyBad

localhorst

AW: Wie sicher ist GET ?

Also wenn du nur Zahlenwerte per GET übergibst, würde ich es beim Auslesen daraufhin prüfen. Dann kann schon mal nichtsschlimmes mehr passieren. Das Thema gabe es hier im Forum aber schon oft. Musst mal hier suchen.
 

Duddle

Posting-Frequenz: 14µHz

AW: Wie sicher ist GET ?

Fremdcode?

Das geht natürlich nur, wenn du GET/POST-Variablen direkt ausführst, also durch die (auch dadurch) als unsicher geltende eval()-Funktion jagst. Oder wenn du diese Variablen innerhalb einer SQL-Abfrage benutzt und an die Datenbank schickst (Stichwort SQL-Injection).

Ersteres kannst du offensichtlich verhindern, indem du o.g. Variablen nie direkt als Code interpretierst. Ich sehe aber nur extrem selten Programme, die sowas machen müssen.

Zweiterem kannst du mit vorbeugen.


Duddle
 

sokie

Mod | Web

AW: Wie sicher ist GET ?

ein Logikfehler?
Code:
[COLOR=#000000][COLOR=#0000BB] [/COLOR][COLOR=#007700]if ([/COLOR][COLOR=#0000BB]htmlspecialchars[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$_GET[/COLOR][COLOR=#007700][[/COLOR][COLOR=#DD0000]'srt'[/COLOR][COLOR=#007700]])!=[/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700])[/COLOR][/COLOR]
ist nur dann false, wenn der Absender Tatsächlich eine 1 per GET schickt.
 

Dimitrj

Nicht mehr ganz neu hier

AW: Wie sicher ist GET ?

Danke für die Antworten!

@MyBad: Ok, ich plag mich gerade ein wenig ab mit der Forumsuche... Er will nicht nach "get" und "sicher" suchen *seufz*

@Duddle: Sorry, ist wohl ne ziemlich newbiesche Frage, aber ist es nicht möglich eine url hinter dem "?" zu maskieren und reinzupacken oderso? So in dem Stil:
PHP:
if ($_GET['srt']!=1)
Code:
www.bla.com?srt=)include('www.sowieso.com/irgendwas.php');

@sokie: Danke für den Hinweis - habe noch einen ergänzenden ==1

Dimitrj
 

FreddyX2

Aktives Mitglied

AW: Wie sicher ist GET ?

@MyBad: Ok, ich plag mich gerade ein wenig ab mit der Forumsuche... Er will nicht nach "get" und "sicher" suchen *seufz*

Dann versuch es mit Google. Und zwar wie folgt:


site:psd-tutorials.de suchbegriff


Duch den Befehl "site:" wird die Suche auf der nachfolgenden Seite beschränkt. site:psd-tutorials.de beschrönkt die Suche also auf PSD-Tutorials.de
Danach die Suchbegriffe.
 

netbandit

Aktives Mitglied

AW: Wie sicher ist GET ?

Zum einen kannst Du mit zum anderen wie Du oben schon geschrieben hast mit bzw. viel entfernen/umwandeln

Um mal Dein "include" Problem mal aufzugreifen: Du könntest Verzeichnis, Dateiname und Dateiendung vorher schon im Script schon festlegen:

PHP:
$verz='deinordner/';
$srt='startseite';
$endung='.php';
if(isset($_GET['srt']))$srt=strip_tags($_GET['srt']);
Dann wären da noch die Möglichkeiten zu überprüfen welche Zeichen übermittelt wurden, letztendlich aber erwartet werden; also z.B. mit einem Suchmuster vergleichen

Leg dann z.B. fest, daß zwischen $verz und $endung nur noch Zahlen, Kleinbuchstaben, Minus und Unterstrich erlaubt sind. Das Suchmuster könnte dann so aussehen:

PHP:
$suchmuster="/[a-z0-9\-_]/";
Dann könntest Du die übermittelten Daten vergleichen, Beispiel mit Deinem include:

PHP:
if(preg_match($suchmuster, $srt)){
include($verz . $srt . $endung);
}
else{
...
}
Könntest aber auch überprüfen ob die Datei wirklich vorhanden ist
PHP:
if(file_exists($verz . $srt . $endung)){
include($verz . $srt . $endung);
}
else{
...
}
Oder vorher die zu importierenden Dateien im Script festlegen, z.B. als Array und überprüfen ob es existiert:

PHP:
unset($datei);
$datei['kontakt']='kontakt.php';

 if(isset($datei[$srt])){
 include($verz . $srt . $endung);
 }
 else{
 ...
 }
Besser noch, alles irgendwie unterbringen. Mehr fällt mir da im Moment auch nicht ein :uhm:
 

Duddle

Posting-Frequenz: 14µHz

AW: Wie sicher ist GET ?

@Duddle: Sorry, ist wohl ne ziemlich newbiesche Frage, aber ist es nicht möglich eine url hinter dem "?" zu maskieren und reinzupacken oderso? So in dem Stil:
PHP:
if ($_GET['srt']!=1)
Code:
www.bla.com?srt=)include('www.sowieso.com/irgendwas.php');

Nein, Variablen werden nicht durch den Interpreter gejagt, also in ihnen wird keine Anweisung gesucht. Ausser eben, wenn du explizit eval() benutzt, das wie o.g. gefährlich ist.


Duddle
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.485
Neuestes Mitglied
derThomas
Oben