PHP Input (Get/Post) sicher machen

Bash, Shell, PHP, Python, Perl, CGI
djbennyf
Posts: 176
Joined: 2003-04-06 19:44

PHP Input (Get/Post) sicher machen

Post by djbennyf »

Ich möchte eine Funktion die php inputs (get/post) sicher macht, sprich keine befehle im string akzeptiert wie z.b. system() print etc...
arty
Userprojekt
Userprojekt
Posts: 729
Joined: 2002-06-12 10:11

Re: PHP Input (Get/Post) sicher machen

Post by arty »

dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: PHP Input (Get/Post) sicher machen

Post by dodolin »

Eine Art "Blacklist" zu machen (wie du vorschlägst) ist IMHO nicht praktikabel. Wenn, dann versuche es über eine Art "Whitelist" zu lösen.

Es gibt kein "sicher" auf Knopfdruck. Jedes Skript muss aufs neue "sicher" geschrieben werden.
djbennyf
Posts: 176
Joined: 2003-04-06 19:44

Re: PHP Input (Get/Post) sicher machen

Post by djbennyf »

Ich will nur dass wenn ein benutzer

test.php?test="+.system('mv+*+/dev/null')+."

aufruft die funktion system nicht ausgeführt wird oder:

test.php?test=$dbpass

dass mein php script nicht das dbpass schreibt
cybermage
Posts: 158
Joined: 2002-12-10 22:10
Location: Ausgburg (Germany)

Re: PHP Input (Get/Post) sicher machen

Post by cybermage »

dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: PHP Input (Get/Post) sicher machen

Post by dodolin »

Ich will nur dass wenn ein benutzer

test.php?test="+.system('mv+*+/dev/null')+."

aufruft die funktion system nicht ausgeführt wird oder:

test.php?test=$dbpass

dass mein php script nicht das dbpass schreibt
Kann es sein, dass du sowohl den Link von arty als auch meinen Beitrag entweder nicht gelesen oder nicht verstanden hast?!
niklas_
Posts: 122
Joined: 2003-08-13 20:46

Re: PHP Input (Get/Post) sicher machen

Post by niklas_ »

DjBennyF wrote:Ich will nur dass wenn ein benutzer

test.php?test="+.system('mv+*+/dev/null')+."

aufruft die funktion system nicht ausgeführt wird oder:

test.php?test=$dbpass

dass mein php script nicht das dbpass schreibt
Das wird auf nicht passieren, solange du $test nicht ausführen lässt via exec()

oder schonmal versucht mit einem echo $test etwas ausführen zu lassen?
auch ein include($test) wird fehlschlagen......
majortermi
Userprojekt
Userprojekt
Posts: 916
Joined: 2002-06-17 16:09

Re: PHP Input (Get/Post) sicher machen

Post by majortermi »

So lange du kein, eval(), kein system(), kein passthru(), kein include() - jeweils auf Variablen natürlich - und ähnliches benutzt bist du schon mal halbwegs sicher. Dann musst du nur noch beim Lesen und Schreiben von Dateien aufpassen, SQL-Injenction verhindern und bei einer Ausgabe immer brav escapen. Lies einfach mal in der DCLP-FAQ nach, da steht das meiste drin.
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...
niklas_
Posts: 122
Joined: 2003-08-13 20:46

Re: PHP Input (Get/Post) sicher machen

Post by niklas_ »

Du könnste ausserdem die Datein in einer $_SESSION Variable übergeben und oder vielleicht den sicherheitskritischen variableninhalt verschlüsseln....
djbennyf
Posts: 176
Joined: 2003-04-06 19:44

Re: PHP Input (Get/Post) sicher machen

Post by djbennyf »

Kann man nicht ein array erstellen mit allen nicht gpc variablen?
niklas_
Posts: 122
Joined: 2003-08-13 20:46

Re: PHP Input (Get/Post) sicher machen

Post by niklas_ »

andersrum nicht leichter?
arty
Userprojekt
Userprojekt
Posts: 729
Joined: 2002-06-12 10:11

Re: PHP Input (Get/Post) sicher machen

Post by arty »

DjBennyF wrote:Kann man nicht ein array erstellen mit allen nicht gpc variablen?
POST/GET/COOKIE stehen auch in $_REQUEST[]

bye
arty
djbennyf
Posts: 176
Joined: 2003-04-06 19:44

Re: PHP Input (Get/Post) sicher machen

Post by djbennyf »

Kann einer von euch eine Funktion basteln, die alle variablen des scripts (globale) in ein Array speichert... Sprich alle variablen lesen und mit den gpc variablen vergleichen... geht das?
arty
Userprojekt
Userprojekt
Posts: 729
Joined: 2002-06-12 10:11

Re: PHP Input (Get/Post) sicher machen

Post by arty »

Sowas steht irgendwo in den Userkommentaren zu den globalen Variablen vom PHP Manual. Einfach da mal ein bisschen drin stöbern.

bye
arty