Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10571[/thread]

Session-Manipulation



<< >> 7 Einträge, 1 Seite
pktm
 2007-10-14 21:30
#100802 #100802
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Gibt es als Benutzer eigentlich Möglichkeiten Sessions zu manipulieren?
Ich würde nämlich gerne die Privilegien eines Nutzers ein der Session ablegen um nicht bei jeder Aktion in der Datenbank nachschlagen zu müssen, ob der Benutzer das darf.
Jetzt habe ich allerdings bedenken, dass der Benutzer irgendwie an der Session herumspielen könnte um sich Privilegien zu verschaffen, die er nicht haben sollte.
Geht sowas? Was sollte man als Sicherheitsvorkehrung machen?

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
moritz
 2007-10-14 21:49
#100803 #100803
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Traue niemals dem Client ;-)
Der Benutzer kann beliebige Cookies zurückschicken (so wie er auch beliebige Formdaten schicken kann), d.h. du solltest bei der Session-ID bleiben und die Privilegien Server-Seitig speichern.
pktm
 2007-10-15 02:01
#100806 #100806
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ja, nun habe ich es so eingebaut, dass ich in der Session die Privilegien zwar aufführe, aber bei der Ausführung dieser trotzdem nochmal die Berechtigungen prüfe.
http://www.intergastro-service.de (mein erstes CMS :) )
pq
 2007-10-15 11:34
#100814 #100814
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
du kannst das cookie höchstens so verschlüsseln, dass der benutzer nicht rausfindet, wie
er das cookie manipulieren kann.
da bleibt allerdings der unsicherheitsfaktor - was passiert, wenn aus irgendeinem grund
dann doch mal die verschlüsselungsmethode bzw. der key öffentlich wird?
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pktm
 2007-10-15 13:31
#100826 #100826
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hm, ok - hier ein paar wohl ganz nützliche Details. Das verwendete System ist das CGI::Application::Plugin::Authorisation, welches im Endeffekt CGI::Session benutzt. Dabei wird ein Keks gesetzt, der die Session-ID beinhaltet. Diese ist bei mir nur für eine Browser-Sitzung gültig, und überwacht auf diesen Cookie.
Wenn man den Keks entschlüsseln möchte benötigt man dieses 'salt' richtig?
Das ist im Idealfall immer (bei jeder Installation) anders, aber gesetz dem Fall, dass Software auch mal nicht von mir installiert wird nicht mehr gewährleistet.

Gibt es noch andere Möglichkeiten an der Session zu schrauben außer über diesen Cookie?
http://www.intergastro-service.de (mein erstes CMS :) )
Strat
 2007-10-15 14:04
#100835 #100835
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich wuerde dem Benutzer nicht weit genug trauen. Da du die SessionID (die steht bei dir in der DB?) sowieso bei jedem Aufruf ueberpruefen solltest, kannst du ja vielleicht gleich bei der Abfrage nach der Session ID auch noch die Rechte/Rollen auslesen, dann kostet es kaum was.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
pq
 2007-10-15 14:13
#100836 #100836
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
strat: wenn man die sessiondaten verschlüsselt als cookie speichert, braucht man nicht
in der db nachzugucken. wobei ich selbst eine datenbanklösung bevorzugen würde.

pktm: salt kenne ich nur von crypt(), aber crypt() kann man ja nicht mehr entschlüsseln,
wenn dann solltest du einen algorithmus wählen, den man umkehren kann.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 7 Einträge, 1 Seite



View all threads created 2007-10-14 21:30.