Thread Sicherheit: PERL-HASH -> Codereferenz (6 answers)
Opened by sosum at 2006-01-22 17:21

sosum
 2006-01-22 20:03
#6730 #6730
User since
2006-01-10
11 Artikel
BenutzerIn
[default_avatar]
Ja, also die möglichen Befehle für den öffentlichen Bereich sind ja eh harmlos. Meist nur abfragen.

Der Ablauf für den beschränkten Zugang sieht aktuell so aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
1. frage Sessionkey aus Cookie ab, und schau nach, ob ein solcher Benutzer angemeldet ist.
1a. wenn nein, beende das Skript.
1b. wenn ein solcher Benutzer angemeldet ist, frage die GET-Variable cmd ab, und rufe ggf die Funktion f(act{cmd}) auf.

2. Ist f(act{cmd}) eine für alle Benutzer verfügbare Funktion, so führe sie aus.

3. Gibt es Restriktionen für das Ausführen dieser Funktion, so frage nach, ob der Benutzer diese Erlaubnis hat (SessionKey (cookie)->userid (db)/ userid->Rechte(db):
&notAuthorized() if (!db->getUserPriv ("loesche_festplatte"));
3a. wenn nein, beende das Kommando.
3b. wenn ja, führe das Kommando aus.

4. zeige das (Ergebnis-)Formular an


Der kontrollierte Funktionsbereich innerhalb des act-hashes macht mir aufgrund der zusätzlichen kontextsensitiven Rechteabfrage eher weniger Sorgen.

Ich habe mit halt gefragt, ob der (öffentliche) "Benutzer" mithilfe von (mir unbekannten) Steuerzeichen aus
Code: (dl )
$act{$input->{cmd}}

soetwas wie
Code: (dl )
$input->{act} = 'gueltiges_harmloses_cmd}{;system('bösesZeug');}'

machen kann. Klingt zugegeben ein wenig weit hergeholt. Funktioniert bei mir auch nicht. Aber boshafte Menschen denken halt auch anders. Die Frage an sich lautet also was Perl aus dem Befehl intern baut. Wie also $input->{act} evaluiert wird.

Gelingt es $input->{act} so zu beschreiben, dass der PERL Interpreter diesen beim Auswerten ausführt, habe ich verloren. Wahrscheinlich würde dann zwar ein Syntaxfehler kommen, aber wohl erst, nachdem der Befehl ausgeführt worden ist.


Oder denke ich nun zu kompliziert?
(ich kann auch weiterhin den Kopf in den Sand stecken :) )\n\n

<!--EDIT|sosum|1137953089-->

View full thread Sicherheit: PERL-HASH -> Codereferenz