php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.10.2008, 16:53  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Letztgesagtes stimmt allerdings

[MOD: verschoben]
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 06.10.2008, 17:21  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Zitat:
Zitat von cortex Beitrag anzeigen
es ist ein potentielles risiko - es muss keins sein. es geht in erster linie um schlampige entwicklung und den kontrollverlust, was über "irgendeinen" kanal in eine anwendung gelangt. der author des verlinkten artikels hat sich schon mehrfach zu dem thema geäussert aber ok... dabei gings überwiegend um das "böse" $_REQUEST. ein zusammenschmeissen von$_GET und $_POST fällt allerdings in dieselbe rubrik.
Dass es mit $_REQUEST in Verbindung mit Cookies Probleme geben kann seh ich ein - da habe ich bisher ehrlich gesagt nie darüber nachgedacht. (Ich verwende $_REQUEST ja auch nicht.)
Und ich finde es jetzt auch nicht unbedingt schön $_GET und $_POST zusammzulegen. Aber wo da das (potentielle) Risiko liegen soll kann ich irgendwie nicht nachvollziehen. Und nur weil einem eine Lösung nicht gefällt, ist sie noch lange nicht "schlampig".
Einen Kontrollverlust seh ich auch nicht und von "irgendeinem" Kanal kann auch nicht die Rede sein. Es sind genau zwei Kanäle GET und POST. Und der Kontrollverlust beschränkt sich darauf, dass ich nicht wissen kann ob eine bestimmte Variable per GET oder per POST übertragen wurde - eine Information auf die man verzichten kann.

(Danke übrigens für den Blog-Link. Ist gerade in meinem Feed-Reader gelandet )
__________________
Today you...Tomorrow me.

Geändert von agrajag (06.10.2008 um 17:29 Uhr).
agrajag ist offline  
Alt 06.10.2008, 19:12  
cortex
Gast
 
Beiträge: n/a
Standard

1. unsauber - darum:

Zitat:
The HTML specifications technically define the difference between "GET" and "POST" so that former means that form data is to be encoded (by a browser) into a URL while the latter means that the form data is to appear within a message body. But the specifications also give the usage recommendation that the "GET" method should be used when the form processing is "idempotent", and in those cases only. As a simplification, we might say that "GET" is basically for just getting (retrieving) data whereas "POST" may involve anything, like storing or updating data, or ordering a product, or sending E-mail.
http://www.cs.tut.fi/~jkorpela/forms/methods.html

2. wenn ein durcheinanderschmeissen der superglobalen ärger bereiten kann, gehe ich dem ganzen durch eine saubere trennung aus dem weg. das problem mit $_COOKIES war dir ja bis heut vormittag ebenfalls weitestgehend unbekannt. so... what comes next?

PHP macht uns die programmierung an vielen stellen sehr leicht; man sollte sich nicht auf dieser einfachheit ausruhen. das KISS-prinzip sollte an dieser stelle nicht misinterpretiert werden ;- denk mal an sicherheitslöcher wie register globals, über die sich vor jahren kein mensch gedanken gemacht hat. mit register globals zu coden war schon immer schlechter stil und eben dieser schlechte stil wurde irgendwann in zahlreichen exploits ausgenutzt.

grüsse,
cx
 
Alt 06.10.2008, 19:27  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Zitat:
Zitat von cortex Beitrag anzeigen
Nein, das hat damit nichts zu tun. Auch wenn ich $_GET und $_POST in ein $params zusammenwürfele kann ich unterscheiden ob es ein GET oder POST-Request ist.

Bei Rails wird das zum Beispiel so gemacht. Du findet GET und POST Paramter in einem gemeinsamen Hash (params) und kannst über request.post? (wäre in PHP sowas wie $request->isPost()) ermitteln ob es ein POST (GET/PUT/DELETE) ist und nur dann bestimmte Aktionen ausführen (oder das ganze gleich über Routing regeln).

Zitat:
2. wenn ein durcheinanderschmeissen der superglobalen ärger bereiten kann, gehe ich dem ganzen durch eine saubere trennung aus dem weg. das problem mit $_COOKIES war dir ja bis heut vormittag ebenfalls weitestgehend unbekannt. so... what comes next?
Ja, was kommt als nächstes? Das Problem mit $_COOKIE wird im verlinkten Artikel ja beschrieben. Und genau das besteht bei GET/POST nicht.
Und dieses Problem bzw. diese spezielle Attacke aus dem Artikel war mir unbekannt, weil ich $_REQUEST nicht verwende und mich nie damit beschäftigt habe.


Zitat:
PHP macht uns die programmierung an vielen stellen sehr leicht; man sollte sich nicht auf dieser einfachheit ausruhen. das KISS-prinzip sollte an dieser stelle nicht misinterpretiert werden ;- denk mal an sicherheitslöcher wie register globals, über die sich vor jahren kein mensch gedanken gemacht hat. mit register globals zu coden war schon immer schlechter stil und eben dieser schlechte stil wurde irgendwann in zahlreichen exploits ausgenutzt.
Über register_globals hat man sich auch schon vor Jahren Gedanken gemacht. Und es ist auch einleuchtend warum das eine ganz schlechte Idee ist und wie leicht das zu fehlern führen kann.
Anders als bei dem, was wir gerade besprechen

Deiner Applikation kann es letztlich egal sein ob es GET oder POST-Paramter sind. Du musst höchstens wissen ob die Seite per GET oder POST aufgerufen wurde. Ich sehe einfach keinen wirklichen Punkt, an dem es wichtig ist zu wissen ob ein bestimmer Parameter nun aus $_GET oder aus $_POST kommt. Überprüfen musst du die Daten egal woher sie kommen. CSRF ist bei beiden möglich. Du musst eben nur aufpassen, dass du nicht $_GET['sonswas'] und $_POST['sonswas'] gleichzeitig verwendest. Ein Sicherheitsproblem ist das nicht. Höchstens ein Punkt an dem man sich wundern wird wenn man nicht drauf achtet.
__________________
Today you...Tomorrow me.

Geändert von agrajag (06.10.2008 um 19:34 Uhr).
agrajag ist offline  
Alt 06.10.2008, 21:30  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Zitat:
Bei Rails wird das zum Beispiel so gemacht. Du findet GET und POST Paramter in einem gemeinsamen Hash (params) und kannst über request.post? (wäre in PHP sowas wie $request->isPost()) ermitteln ob es ein POST (GET/PUT/DELETE) ist und nur dann bestimmte Aktionen ausführen (oder das ganze gleich über Routing regeln).
Warum sollte man das machen?
Zitat:
Du musst höchstens wissen ob die Seite per GET oder POST aufgerufen wurde.
Nicht ganz richtig. Auch ein POST Form kann GET Daten mitsenden.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 06.10.2008, 22:23  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Zitat:
Bei Rails wird das zum Beispiel so gemacht. Du findet GET und POST Paramter in einem gemeinsamen Hash (params) und kannst über request.post? (wäre in PHP sowas wie $request->isPost()) ermitteln ob es ein POST (GET/PUT/DELETE) ist und nur dann bestimmte Aktionen ausführen (oder das ganze gleich über Routing regeln).
Warum sollte man das machen?
Was meinst du jetzt genau? GET und POST zusammenfassen? Keine Ahnung - ich sage ja nicht, dass man es machen sollte. Ich sage nur, dass es kein Sicherheitsrisiko ist.
Oder wolltest du jetzt auf das Routing oder request.post? raus?


Zitat:
Nicht ganz richtig. Auch ein POST Form kann GET Daten mitsenden.
Ja, und?
Es ging dabei ja um den Hinweis, dass GET und POST-Requests verschiedene Anwendungen haben (sollten).
Es ist dabei egal ob die Daten als POST-Parameter oder GET-Parameter gesendet wurden. Wichtig ist ob es ein POST oder GET Request ist.
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 07.10.2008, 09:24  
cortex
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von agrajag Beitrag anzeigen
Nein, das hat damit nichts zu tun. Auch wenn ich $_GET und $_POST in ein $params zusammenwürfele kann ich unterscheiden ob es ein GET oder POST-Request ist.
du wiederholst dich. dass du $_GET und $_POST unterscheiden kannst, hat niemand bestritten.

Zitat:
Zitat von agrajag Beitrag anzeigen
Bei Rails wird das zum Beispiel so gemacht
prima - dann ist ja alles in ordnung.

Zitat:
Zitat von agrajag Beitrag anzeigen
weil ich $_REQUEST nicht verwende
dann frage ich mich, warum du diese ideologisch gefärbte diskussion mit mir führst. es scheint doch einen grund zu geben, warum du selbst $_REQUEST nicht verwendest.

Zitat:
Zitat von agrajag Beitrag anzeigen
Über register_globals hat man sich auch schon vor Jahren Gedanken gemacht
soso. darum schleppen einen haufen anwendungen die geschwüre dieser schlechten idee immer noch mit sich herum, hm?

Zitat:
Zitat von agrajag Beitrag anzeigen
Ein Sicherheitsproblem ist das nicht
ich lasse das so stehen. ich habe mich zu dem ganzen geäussert und darüber hinaus keine lust, mich noch ein paar runden mit dir im kreis zu drehen. letztendlich kann jeder so coden, wie er's für richtig erachtet - ideologische grabenkämpfe bringen niemandem etwas, da es DOs und DON'Ts gibt, die sich zwischen 0 und 1 bewegen.

in diesem sinne,
cx
 
Alt 07.10.2008, 10:34  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Zitat:
Zitat von cortex Beitrag anzeigen
du wiederholst dich. dass du $_GET und $_POST unterscheiden kannst, hat niemand bestritten.
Doch, implizit - mit deinem Hinweis, dass GET und POST Requests verschiedene Anwendungen haben.

Zitat:
dann frage ich mich, warum du diese ideologisch gefärbte diskussion mit mir führst. es scheint doch einen grund zu geben, warum du selbst $_REQUEST nicht verwendest.
Ich führe diese Diskussion weil ich nicht verstehe was an GET/POST-Paramter zusammenfassen ein Risiko ist.
Es geht doch auch garnicht darum warum ich es nicht verwende oder warum Rails und andere es verwenden. Es geht darum ob es sicher ist oder nicht. Ich sage ja du sagst nein. Und ich verstehe nicht warum...

Zitat:
ich lasse das so stehen. ich habe mich zu dem ganzen geäussert und darüber hinaus keine lust, mich noch ein paar runden mit dir im kreis zu drehen.
Ok. Ich find's schade.

Zitat:
letztendlich kann jeder so coden, wie er's für richtig erachtet - ideologische grabenkämpfe bringen niemandem etwas, da es DOs und DON'Ts gibt, die sich zwischen 0 und 1 bewegen.
Da sind wir uns wenigstens einig. ...
__________________
Today you...Tomorrow me.
agrajag ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Referenzen auf Objekte innerhalb eines Arrays PHP-Fortgeschrittene 6 31.08.2009 17:06
Login-System ohne Sessions ratsam? MauMau PHP Tipps 2008 4 02.09.2008 12:09
2 Sessions Kein Genie PHP Tipps 2006 8 21.07.2006 15:45
[Erledigt] Objekte vergleichen PHP-Fortgeschrittene 4 08.12.2005 16:20
[Erledigt] probleme mit sessions PHP Tipps 2007 1 17.11.2005 10:43
[Erledigt] Nach Einfügugng der Sessions funktioniert mein Program nicht PHP-Fortgeschrittene 1 02.10.2005 06:13
Sessions! DER_Brain PHP Tipps 2005-2 5 30.06.2005 14:51
2 Sessions? PHP Tipps 2005 5 29.04.2005 19:04
objekte in sessions mit register globals of PHP Tipps 2005 1 12.03.2005 17:06
Proble mit Sessions PHP Tipps 2005 7 07.02.2005 17:42
Sessions PHP Tipps 2005 6 14.01.2005 15:02
variablen per sessions übergeben PHP Tipps 2005 5 13.01.2005 12:09
Sessions und ZoneAlarm PHP Tipps 2004 4 25.08.2004 17:35
[Erledigt] Usermanagement mit Sessions - Sicherheitsprobleme ? PHP Tipps 2004 0 30.06.2004 09:49
[Erledigt] Sessions, sessions und nochmal sessions PHP-Fortgeschrittene 0 06.06.2004 00:36

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
class_session.php, _request->ispost bestimmtes formular

Alle Zeitangaben in WEZ +1. Es ist jetzt 11:26 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum